我有一个气象站,它将数据发送到 Raspberry PI,其中运行一个 Linux 服务器来获取数据并存储它。除了一件小事之外,一切都运转良好。 Raspberry 通过 USB 电缆连接到气象站室内显示屏。显示器设置为在开机时再现声音。所以基本上,每天晚上凌晨3点我都会被这种声音吵醒。然后我通过 ssh 连接到 Raspberry 并输入此命令来访问日志,以查看当时发生了什么:
nano /var/log/syslog
我发现了这一行:
Jul 21 02:53:01 weatherstation CRON[25991]: (root) CMD (sudo reboot)
这每天都会在同一时间重复。所以,显然我在 crontab 中有一些东西可以不断重新启动我的树莓派。显然,如果设备重新启动只是为了放松一下,那是可以的,但在凌晨 3 点就不行了,哈哈。
然后我打开:
nano /etc/crontab
我发现了这 4 行:
17 * * * * root cd / && run-parts --report /etc/cron.hourly
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
所以没有明确的 sudo restart,但我怀疑 /etc/cron.daily 中的某些内容正在执行该指令。所以我打开了文件夹 cron.daily 并在里面找到了这些文件:
apache2 apt-compat aptitude bsdmainutils cracklib-runtime dpkg exim4-base logrotate man-db passwd
我唯一感兴趣的文件是apt-compat
.在那里我发现了这个:
# run daily job
exec /usr/lib/apt/apt.systemd.daily
问题是,这个文件对我来说太复杂了。我不知道里面使用的编程语言,也不知道技术上是做什么的。所以我想将重启时间从凌晨 3 点改为上午 10 点,但我不明白如何做。
感谢大家的关注。
答案1
从日志消息中,我们看到它是通过 cron (而不是例如 systemd 计时器)运行的,并且命令正是sudo reboot
.
大多数系统提供的 cron 作业都位于 中的文件中/etc/cron.d/
,因此这是一个可以查看的地方。
root 用户的个人 crontab 中也可以有一些东西。应使用 和crontab -l
来查看和编辑每个用户的 crontab crontab -e
,但它们通常驻留在/var/spool/cron/crontabs/
或某个此类目录中。 (这是 Debian 上的路径,在其他系统上可能会有所不同。)不过,通常情况下,您不会在那里看到系统提供的东西。
然后是/etc/cron.daily
类似的目录,其中的文件只是可执行文件(通常是 shell 脚本),某些工具每天/每周/每月运行这些文件。尽管这些可能会提供不同类型的日志条目,因为它们不直接从 cron 运行。
在紧要关头,你总是可以退回到grep -re "sudo reboot" /etc/ /var/
等等。
有关的:`/etc/crontab`、`/etc/cron.d/` 和 `/var/spool/cron/crontabs/root` 下的文件之间的区别?我想我也将链接到这里:CentOs7中如何查看所有cron记录