gpt4 book ai didi

Linux:在进程 ID 完成或被杀死后发送邮件

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:27:31 24 4
gpt4 key购买 nike

我想在其他用户的进程终止或完成后通过我的电子邮件收到通知。我可以通过进程 ID 或出现在“top”命令中的进程名称来识别另一个用户的进程。

为了做到这一点,我编写了以下脚本:

while true; do
if ps -ef | grep -q 'process_name'; then
sleep 1
else
echo "complete" | mail -s "process exiting" abc@gmail.com
fi
done

但是,我发现即使在另一个用户的进程完成或其他用户终止了他或她的进程后,我仍然没有收到任何通知或电子邮件。有人可以帮我解决这个问题吗?

最佳答案

问题很可能是这个检查:

if ps -ef | grep -q 'process_name'; then

它将始终为 true。为什么?直接在命令行上运行它,不用 -qgrep,它会很明显:​​

$ ps -ef | grep 'process_name'
user 4550 3349 0 09:17 pts/0 00:00:00 grep --colour=auto process_name
$ echo $?
0

上面的例子表明 grep 总是会成功,因为它找到了自己!

有很多方法可以解决这个问题。一种方法是使用 pgrep而不是 grep

if pgrep 'process_name' > /dev/null; then

关于Linux:在进程 ID 完成或被杀死后发送邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34709788/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com