小编bit*_*oob的帖子

禁用 systemd 计时器单元的正确方法是什么?

我已经成功地将我的一些 cron 作业迁移到了 systemd。我遵循了一些指南,并采用了创建 3 个文件的标准方法:

myjob.timer - systemd timer unit
myjob.service - systemd service unit
myjob.sh
Run Code Online (Sandbox Code Playgroud)

正如您可能猜到的那样,在某个时间触发 myjob.timer,它运行 myjob.service,然后执行 myjob.sh。

我的所有计时器都具有相同的设置,现在我看到一切正常,我想禁用 myjob.timer,它只是一个测试器。

我只是做:

systemctl --user disable myjob.timer
Run Code Online (Sandbox Code Playgroud)

还是我还必须做:

systemctl --user disable myjob.service
Run Code Online (Sandbox Code Playgroud)

正确的做法是什么?我对 systemd 很陌生,所以我想学习如何以正确的方式做事。我猜测禁用这两个单元是正确的,以保持系统没有超额行李运行。

systemd systemd-timer

35
推荐指数
1
解决办法
2万
查看次数

SIGQUIT 和 SIGTERM 一样吗?

我正在学习 CentOS/RHEL,目前正在做一些关于进程管理的工作。

我正在阅读的 RHCSA 书将运行描述kill 1234为发送 SIGQUIT。我一直认为不添加信号类型开关的 kill 命令应该默认为kill -15

SIGTERMkill -15和 SIGKILL 是kill -9,对吧?

CentOS/RHEL 是否使用了稍微不同的方法 kill -15或者我只是弄错了?

编辑:kill -l给 SIGQUIT askill -3并且它似乎与使用键盘终止进程有关。man 7 signal还指出 SIGQUIT 是kill -3,所以我只能假设我的书错误地指出 SIGQUIT 是kill -15默认值。

kill process-management

19
推荐指数
1
解决办法
2万
查看次数

gnupg:尝试 gpg --gen-key 时出错

我尝试删除我的 .gnupg 目录,但错误返回。

我明白了:

gpg: lookup_hashtable failed: eof
gpg: lookup_hashtable failed: eof
gpg: upd_hashtable: read failed: eof
gpg: trust record 2, type 12: write failed: eof
gpg: Error: The trustdb is corrupted.
gpg: You may try to re-create the trustdb using the commands:
gpg:   cd ~/.gnupg
gpg:   gpg2 --export-ownertrust > otrust.tmp
gpg:   rm trustdb.gpg
gpg:   gpg2 --import-ownertrust < otrust.tmp
gpg: If that does not work, please consult the manual
Run Code Online (Sandbox Code Playgroud)

我尝试遵循错误抛出的建议,但这也不起作用。尝试谷歌搜索问题,但没有出现“lookup_hastable”。

我还安装了 seahorse 并将我的 ssh 密钥存储在 seahorse 中。海马会发生冲突吗?

gpg --gen-key …

gpg gnupg

8
推荐指数
1
解决办法
3956
查看次数

utmp、wtmp 和 btmp:什么是“tmp”

从前面的问题:

为什么 utmp、wtmp 和 btmp 被称为它们?

我现在想知道“tmp”部分是什么。是“临时/临时”吗?正如您从前面的问题中看到的那样,该部分没有得到回答。

history last wtmp btmp

5
推荐指数
1
解决办法
2040
查看次数

为什么我在尝试网络命令时在 bash-completion 中得到一个随机 IP

我家庭网络上的其中一台 PC 的主机名是“3770k”,因为这是它的 CPU 型号。

我通常输入 'ssh 3' 并点击 Tab 来自动完成连接。

我刚刚意识到我现在有两个以 3 开头的条目:我的常规 3770k 一个和 35.156.197.162。

它出现在我尝试 ssh、scp 和 rsync 时。它可以追溯到密歇根州的安娜堡。我在英国,从未有意连接到密歇根州的 PC。

知道我做了什么吗?是否有我可能不小心将这个地址附加到的配置文件?我查看了 ~/.ssh/config 并且它不存在。我没有不小心创建了一个以 IP 命名的文件。如果我尝试 ping 这个神秘地址,我不会收到任何回复。

如果我用 ssh 自动完成它,后面会有一个冒号,所以我的电脑似乎认为它是一个网络位置。

networking bash ssh

4
推荐指数
1
解决办法
294
查看次数

防止 systemd 计时器在启动时运行

我一直在将我的 crontab 迁移到 systemd 的计时器单元。它们看起来都类似于:

.timer 文件:

[Unit]
Description=timer that uses myjob.service

[Timer]
OnCalendar=*-*-* *:00:00
Unit=myjob.service

[Install]
WantedBy=timers.target
Run Code Online (Sandbox Code Playgroud)

.service 文件:

[Unit]
Description=Script that runs myjob.sh

[Service]
ExecStart=/home/user/myjob.sh
Run Code Online (Sandbox Code Playgroud)

我的计时器可以工作,但它们也会在系统重新启动时执行。我希望我的 OnCalendar 事件只在指定的时间运行,而不是在我重新启动 PC 的任何随机时间运行。有任何想法吗?


更新:我通过将我的“用户”计时器转换为根/系统计时器解决了这个问题。

  1. 我禁用了所有 .service 和 .timer 文件,并将它们从我的主目录中移到 /etc/systemd/system 中。

  2. 我在每个服务文件中添加了“用户 =”部分,以便我的脚本由普通用户而不是 root 用户运行。

现在我的计时器没有在系统启动时被触发,当我通过 ssh 登录时,我也遇到了偶发触发的问题。现在这也已解决,因为它们受 root 帐户的控制,但运行我的脚本仍然作为普通用户的 PID 运行,这保留了我的文件的所有权属性。问题解决了。

cron systemd systemd-timer

3
推荐指数
2
解决办法
3168
查看次数

标签 统计

systemd ×2

systemd-timer ×2

bash ×1

btmp ×1

cron ×1

gnupg ×1

gpg ×1

history ×1

kill ×1

last ×1

networking ×1

process-management ×1

ssh ×1

wtmp ×1