$ps -fu $USER UID PID PPID C STIME TTY TIME CMD kanoujip 22471 21858 0 Sep16 pts/3 00:00:00 /bin/sh ./Alert_notification.sh 卡努吉普 27450 27390 0 九月 16 ? 00:00:00 sshd: kanoujip@pts/9
我想再次运行一次,./Alert_notification.sh
因此想从我的用户 ID 中删除之前的所有运行
我怎样才能做到这一点?
ps -fu $用户| grep Alert_notification.sh |grep -vE 'grep|"$PPID"' | awk '{print $2}' | xargs kill `ps -o pid= -NT` ;
终止所有“我的用户”会话
答案1
如果我很好地理解您的请求,您不必对$PPID
变量进行 grep 操作,该变量甚至可能在您最后调用的脚本执行中使用,而是在最后调用的脚本的 PID 上使用:$$
。
如果您script.sh
使用相同的调用bash
,$PPID
则脚本的所有其他执行script.sh
(或Alert_notifications.sh
在您的情况下)将是相同的。
尝试更改您的命令并添加一些控制(如果您愿意):
ps -fu $USER | grep "Alert_notification.sh" | grep -v "grep\|$$" | awk '{print $2}' | xargs kill 2> /dev/null
2> /dev/null
:您需要它来省略错误消息,以防某些情况下发现没有进程