这就是我现在在bash脚本中所拥有的:
ps aux | grep glassfish | grep domain1 | gawk '{print $2}' | xargs kill -9
问题在于,如果有其他人登录并拉动与glassfish相关的东西,那么它也会拉动该PID。从而导致杀死错误的PID。
所以我的问题是如何修复我只需要提取正确的PID,以及如何重写它以从glassfish生成的PID文件中提取PID。
答案 0 :(得分:17)
编辑启动glassfish的脚本,并在紧随其后的行上放置类似echo $$ > /path/to/PID-file
的内容(这可以包含~
用于主目录或其他一些机制,如$USER
以使用户特定)开始这个过程的线。然后,您可以使用kill $(cat /path/to/PID-file)
终止正确的流程。
答案 1 :(得分:0)
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是将被选中和列出的用户名,默认情况下应该已在OS环境中设置。可以通过逗号 ps aux -u root,$USER
请注意:如果系统中没有特定的用户名,ps将抛出错误:用户名不存在。 < / p>
阅读 man ps
了解更多信息。
<击>
-u userlist 按有效用户ID(EUID)或名称选择。 这将选择其有效用户名或ID在用户列表中的进程。有效用户ID描述其用户 进程使用文件访问权限(请参阅geteuid(2))。 相同 到U和--user。