流程操控

流程操控
$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:您需要它来省略错误消息,以防某些情况下发现没有进程

相关内容