> 운영 및 유지보수 > 안전 > systemd로 할 수 있는 세 가지 놀라운 일

systemd로 할 수 있는 세 가지 놀라운 일

WBOY
풀어 주다: 2023-06-09 15:38:15
앞으로
1200명이 탐색했습니다.

三件可以用 systemd 做的令人惊讶的事情

컴퓨터 부팅 속도를 높이는 것만이 아닙니다.

systemd가 처음 나왔을 때 부팅 시간을 단축할 수 있다는 소식이 많이 있었습니다. 이 기능은 대부분의 사람들에게 매력적이므로(재부팅하지 않는 사람들에게는 그렇지 않음) 여러 면에서 오늘날에도 여전히 그 명성을 누리고 있습니다. systemd는 부팅 프로세스 중에 병렬로 서비스를 시작하는 역할을 수행하지만 그 이상을 수행합니다. systemd가 할 수 있다는 것을 깨닫지 못할 수도 있지만 활용해야 할 세 가지 사항은 다음과 같습니다.

1. Linux 단순화 ps

​ps​​ 또는 심지어 ​​top​​ 명령을 사용하면 컴퓨터가 항상 수백 개의 프로세스를 실행하고 있음을 알 수 있습니다. 때때로 이는 컴퓨터나 사용자가 수행하는 작업을 이해하는 데 필요한 정보일 뿐입니다. 어떤 경우에는 실제로 필요한 것은 일반적인 개요입니다. ​ps​​,甚至只是 ​​top​​ 命令,那么你就会知道你的电脑一直都在运行数百个进程。有时,这正是你需要的信息,以便了解你的计算机或其用户在做什么。其他时候,你真正需要的是一个总体的概览。

​systemd-cgtop​​ 命令提供了一个基于控制组cgroup任务安排的计算机负载的简单视图。​​控制组​​ 对现代 Linux 很重要,基本上是容器和 Kubernetes 的底层支持结构(这也是云计算可以扩展的原因),但它们也是家庭电脑上的有用结构。例如,从 ​​systemd-cgtop​​ 的输出中,你可以看到用户进程的负载,而不是系统进程:

Control Group Proc+ %CPU MemoryInput/s Output/s
/ 1835.0 1.6G 0B 3.0M
user.slice42.8 1.1G 0B 174.7K
user.slice/user-1000.slice42.8 968.2M 0B 174.7K
system.slice 652.2 1.5G 0B 2.8M
로그인 후 복사

你也可以只查看你的用户空间进程,或者查看用户空间进程和内核线程。

这绝不是对 ​​top​​ 或 ​​ps​​ 的替代,而是从一个不同的、独特的角度来观察你的系统。在运行容器时,它可能是至关重要的,因为容器使用控制组。

2、Linux 定时任务

​Cron​​ 是 Linux 的一个经典组件。当你想安排一些事情定期发生时,你会使用 Cron。它很可靠,而且相当好地集成到你的系统中。

问题是,Cron 并不了解有些计算机会被关闭。如果你有一个安排在午夜的 Cron 任务,但你每天在 23:59 关闭你的电脑,那么你的 Cron 任务就永远不会运行。Cron 没有任何工具可以检测到一夜之间错过了工作。

作为对这个问题的回答,有一个很好的 ​​Anacron​​,但它不像 Cron 那样集成的好。要让 Anacron 运行,你需要做很多设置。

第二个选择是 systemd 计时器。和 Cron 一样,它也是内置的,可以随时使用。你需要写一个单元文件,这肯定比单行的 Crontab 条目多,但也很简单。例如,这里有一个单元文件,在开机 30 分钟后运行一个假想的备份脚本,但每天只运行一次。这可以确保我的电脑得到备份,并防止它每天尝试备份超过一次。

[Unit]
Description=Backup
Requires=myBackup.service
[Timer]
OnBootSec=30min
OnUnitActiveSec=1d
[Install]
WantedBy=timers.target
로그인 후 복사

当然,你也可以干预并提示运行一个任务。多亏了 ​​OnUnitActiveSec​

​<코드 스타일="배경색: rgb(231, 243, 237); 패딩: 0px 3px; 테두리 반경: 4px; 오버플로 랩: break-word; 텍스트 들여쓰기: 0px;">​systemd -cgtop 명령은 제어 그룹 cgroup 작업 예약을 기반으로 컴퓨터 로드에 대한 간단한 보기를 제공합니다. ​​컨트롤 그룹​​은 최신 Linux에 매우 중요하며 기본적으로 컨테이너와 Kubernetes에 대한 기본 지원을 제공합니다. 구조(클라우드 컴퓨팅이 확장될 수 있는 이유)이지만 가정용 컴퓨터에서도 유용한 구조입니다. 예를 들어 ​ ​systemd-cgtop​​의 출력에서 ​​시스템 프로세스가 아닌 사용자 프로세스의 로드를 볼 수 있습니다. 🎜
$ podman generate systemd --new --files --name example_pod
로그인 후 복사
로그인 후 복사
🎜 사용자 공간 프로세스만 보거나 사용자 공간 프로세스 및 커널 스레드를 볼 수도 있습니다. 🎜🎜이것은 절대 사실이 아닙니다. ​​top​​ 또는 ​​ps​​ 시스템을 다른 고유한 관점에서 보는 대신. 컨테이너는 제어 그룹을 사용하므로 컨테이너를 실행할 때 중요할 수 있습니다. 🎜🎜2. Linux 예약 작업🎜🎜​​Cron​​은 Linux의 고전적인 구성 요소입니다. 정기적으로 어떤 일이 발생하도록 예약하려는 경우 Cron을 사용합니다. 안정적이며 시스템에 상당히 잘 통합됩니다. 🎜🎜문제는 Cron이 일부 컴퓨터가 종료된다는 사실을 이해하지 못한다는 것입니다. 크론 작업이 자정으로 예약되어 있지만 매일 23시 59분에 컴퓨터를 종료하는 경우 크론 작업은 실행되지 않습니다. Cron에는 밤새 놓친 작업을 감지하는 도구가 없습니다. 🎜🎜이 질문에 대한 답변으로 좋은 ​​Anacron​​이 있지만, Cron만큼 통합되지 않았습니다. Anacron을 실행하려면 많은 설정이 필요합니다. 🎜🎜두 번째 옵션은 시스템 타이머입니다. Cron과 마찬가지로 내장되어 있어 바로 사용할 수 있습니다. 단위 파일을 작성해야 하는데 이는 한 줄의 Crontab 항목보다 확실히 더 많은 작업이지만 매우 간단합니다. 예를 들어, 다음은 부팅 후 30분 동안 하루에 한 번만 가상 백업 스크립트를 실행하는 단위 파일입니다. 이렇게 하면 내 컴퓨터가 백업되고 하루에 두 번 이상 백업을 시도하는 것을 방지할 수 있습니다. 🎜
$ systemctl --user start pod-example_pod.service
로그인 후 복사
로그인 후 복사
🎜 물론 개입하여 작업 실행을 요청할 수도 있습니다. ​OnUnitActiveSec 덕분에 ​​ 지시문을 사용하면 systemd는 수동으로 활성화한 작업을 실행하려고 시도하지 않습니다. 🎜

3、运行 Linux 容器

容器使启动一个复杂的服务变得非常容易。你可以在短短几分钟内运行一个 ​​Mattermost​​ 或 Discourse 服务器。在某些情况下,困难的部分是在你运行容器后管理和监控它们。Podman 使得管理它们变得容易,但是用什么来管理 Podman 呢?嗯,​​你可以使用 systemd​​。

Podman 有一个内置的命令来生成单元文件,这样你的容器就可以被 systemd 管理和监控:

$ podman generate systemd --new --files --name example_pod
로그인 후 복사
로그인 후 복사

然后你所要做的就是启动服务:

$ systemctl --user start pod-example_pod.service
로그인 후 복사
로그인 후 복사

和其他服务一样,systemd 确保你的容器荚在任何情况下都能运行。它记录问题,你可以用 ​​journalctl​​ 和其他重要的日志来查看,你也可以用 ​​systemd-cgtop​​ 在控制组中监控它的活动。

它不是 ​​Kubernetes 平台​​,但对于一两个容器来说,你只需要在可靠和可预测的基础上提供服务,Podman 和 systemd 是一对很棒的组合。

下载 systemd 电子书

systemd 的内容还有很多,你可以从作者 ​​David Both​​ 的新书《​​systemd 实用指南​​》中了解基础知识,以及很多实用的技巧。

위 내용은 systemd로 할 수 있는 세 가지 놀라운 일의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:51cto.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿