这就是我现在在 bash 脚本中的内容:
ps aux | grep glassfish | grep domain1 | gawk '{print $2}' | xargs kill -9
这样做的问题是,如果其他人登录并拉取与 glassfish 相关的东西,它也会拉取该 PID。从而导致杀死错误的PID。
所以我的问题是如何修复我必须只提取正确的 PID,以及如何重写它以从 glassfish 生成的 PID 文件中提取 PID。
编辑启动 glassfish 的脚本,并在启动进程的行之后的行上放置类似的echo $$ > /path/to/PID-file
内容(这可以包含~
主目录或其他一些机制,例如$USER
使用户特定)。然后,您可以使用kill $(cat /path/to/PID-file)
.
ps aux | grep ^$USER | grep glassfish | grep domain1 | gawk '{print $2}' | xargs kill -9
下面我用ps
开关弄错了,所以上面的 grep 应该没问题。
啊它不起作用,ps
可以这样使用ps -ao pid,tty,comm -u $USER
,上面的这个grep应该没问题......
其他人登录...
如果是这样,请添加开关 -u
ps aux -u $USER | grep glassfish | grep domain1 | gawk '{print $2}' | xargs kill -9
$USER 是将被选择和列出的用户名,默认情况下应该已经在操作系统环境中设置。可以用逗号选择多个用户ps aux -u root,$USER
注意:如果系统中没有特定的用户名,ps会抛出ERROR: User name does not exist。
阅读man ps
更多。
-u userlist 按有效用户 ID (EUID) 或名称选择。这将选择其有效用户名或 ID 在用户列表中的进程。有效用户 ID 描述了进程使用其文件访问权限的用户(请参阅 geteuid(2))。与 U 和 --user 相同。