如何检查Linux中已经执行的程序?

如何检查Linux中已经执行的程序?

我正在运行各种克罗恩我的Linux机器。最近我更新了它,想检查它是否运行正常。例如:

0 6 * * 1-5 /scripts/foo.sh

除了我在预定的时间内检查进程是否实际运行的情况外ps x,有没有办法简单地检查过去 24 小时内执行的程序/脚本或类似的东西?

我是 Linux 新手。任何想法/提示对我都有用!

答案1

我在脚本的开头和结尾附近添加了 date 和 printf 语句,以便将日期和时间写入主目录中的文本文件。我还将输出定向到该文件,以便它记录您在终端中运行时将获得的输出。以下是示例

#!/bin/sh

set -e

date >> /home/john/anacronjobs.txt

printf "pizero Starting!\n" >> /home/john/anacronjobs.txt

rsync -avh [email protected]:/home/pi/Python /home/john/pizero1 >> /home/john/anacronjobs.txt 2>&1

printf "pizero Done!\n\n" >> /home/john/anacronjobs.txt

date >> /home/john/anacronjobs.txt

exit

使用 >> 运算符可确保其附加到文件而不是覆盖文件

输出如下

Sun 14 Feb 11:06:04 GMT 2021
pizero Starting!
receiving incremental file list
Python/test.txt

sent 6.53K bytes  received 6.42K bytes  278.52 bytes/sec
total size is 1.17M  speedup is 90.55
pizero Done!

答案2

Cron 传统上会记录到/var/log/syslog,因此简单的grep字符串CRON和/或foo.sh应该可以确定是否尝试执行。

systemd基于现代的系统上,您可以通过 ex 访问等效的日志条目journalctl

journalctl -u cron.service --since -1day | grep -F foo.sh

也许

journalctl -u cron.service --grep 'foo\.sh' --since -1day

如果您的系统journalctl编译时支持模式匹配。

相关内容