pkill 不会终止进程
pkill doesn't kill process
我有一个名为 运行ning 的进程 productivity
[root@productivity ~]# netstat -tunlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1009514/sshd
tcp6 0 0 :::8443 :::* LISTEN 2803472/productivit
tcp6 0 0 :::443 :::* LISTEN 1017657/httpd
tcp6 0 0 :::80 :::* LISTEN 1017657/httpd
tcp6 0 0 :::22 :::* LISTEN 1009514/sshd
udp 0 0 127.0.0.1:323 0.0.0.0:* 1009281/chronyd
udp6 0 0 ::1:323 :::* 1009281/chronyd
我定期重启服务来更新 let's encrypt 证书
[root@productivity ~]# cat restart-productivity.sh
#!/bin/sh
pkill "productivity"
bash -c "exec -a productivity java -jar productivity.jar -Dkeystore.location=./ssl/productivity.to.keystore . & disown &"
几个月来这就像一个魅力。现在,即使我手动 运行 pkill productivity
服务也不会被杀死。我只能通过调用 kill PID
来终止服务。这确实有效,但对自动化没用。
我 运行正在使用 CentOS 8,我不知道为什么它停止工作。有人可以帮我吗?
更新
[root@productivity ecommerce]# ps aux | grep productivity
root 2803472 1.3 10.3 2648228 204168 pts/1 Sl 20:24 0:21 productivity -jar productivity.jar -Dkeystore.location=./ssl/productivity.to.keystore .
root 2803848 0.0 0.0 11800 1152 pts/1 S+ 20:49 0:00 grep --color=auto productivity
我使用 kill
向大多数进程发送 SIGTERM。
我不再使用 pkill
,而是更喜欢 pgrep
结合 kill
...
pgrep -io "PROCESSNAME" | xargs kill
-i
是检查不区分大小写
而-o
是只输出第一个进程ID。
您可以在 ~/.bashrc_aliases
中将其用作 alias
或直接在 ~/.bashrc
中使用。
例如,我用它来杀死 discord,因为它不会自行停止。
alias kill_discord='pgrep -io discord | xargs kill'
只是我的 2cents。
更新
终止进程的经验法则。
- SIGTERM 正在尝试以正常方式关闭进程。
- 当 SIGTERM 不起作用时,您可以尝试 SIGINT。这是一个像 CTRL-C.
这样的中断
- 如果这些信号都不起作用,您可以尝试 SIGHUB。该信号在关闭终端时发送到进程。守护进程将重新加载它们的配置文件。
- 最后但同样重要的是 SIGKILL。无论如何这都会终止任何进程,并且只应在进程不再响应时使用它。
kill {-2|-INT|-SIGINT|-s 2|-s INT|-s SIGINT|--signal 2|--signal INT|--signal SIGINT} [PID]
kill {-1|-HUB|-SIGHUB|-s 1|-s HUB|-s SIGHUB|--signal 1|--signal HUB|--signal SIGHUB} [PID]
kill {-9|-KILL|-SIGKILL|-s 9|-s KILL|-s SIGKILL|--signal 9|--signal KILL|--singal SIGKILL} [PID]
最终对我有用的解决方案是
#!/bin/sh
PID=`pidof productivity`
kill $PID
bash -c "exec -a productivity java -jar productivity.jar . & disown &"
我有一个名为 运行ning 的进程 productivity
[root@productivity ~]# netstat -tunlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1009514/sshd
tcp6 0 0 :::8443 :::* LISTEN 2803472/productivit
tcp6 0 0 :::443 :::* LISTEN 1017657/httpd
tcp6 0 0 :::80 :::* LISTEN 1017657/httpd
tcp6 0 0 :::22 :::* LISTEN 1009514/sshd
udp 0 0 127.0.0.1:323 0.0.0.0:* 1009281/chronyd
udp6 0 0 ::1:323 :::* 1009281/chronyd
我定期重启服务来更新 let's encrypt 证书
[root@productivity ~]# cat restart-productivity.sh
#!/bin/sh
pkill "productivity"
bash -c "exec -a productivity java -jar productivity.jar -Dkeystore.location=./ssl/productivity.to.keystore . & disown &"
几个月来这就像一个魅力。现在,即使我手动 运行 pkill productivity
服务也不会被杀死。我只能通过调用 kill PID
来终止服务。这确实有效,但对自动化没用。
我 运行正在使用 CentOS 8,我不知道为什么它停止工作。有人可以帮我吗?
更新
[root@productivity ecommerce]# ps aux | grep productivity
root 2803472 1.3 10.3 2648228 204168 pts/1 Sl 20:24 0:21 productivity -jar productivity.jar -Dkeystore.location=./ssl/productivity.to.keystore .
root 2803848 0.0 0.0 11800 1152 pts/1 S+ 20:49 0:00 grep --color=auto productivity
我使用 kill
向大多数进程发送 SIGTERM。
我不再使用 pkill
,而是更喜欢 pgrep
结合 kill
...
pgrep -io "PROCESSNAME" | xargs kill
-i
是检查不区分大小写
而-o
是只输出第一个进程ID。
您可以在 ~/.bashrc_aliases
中将其用作 alias
或直接在 ~/.bashrc
中使用。
例如,我用它来杀死 discord,因为它不会自行停止。
alias kill_discord='pgrep -io discord | xargs kill'
只是我的 2cents。
更新
终止进程的经验法则。
- SIGTERM 正在尝试以正常方式关闭进程。
- 当 SIGTERM 不起作用时,您可以尝试 SIGINT。这是一个像 CTRL-C. 这样的中断
- 如果这些信号都不起作用,您可以尝试 SIGHUB。该信号在关闭终端时发送到进程。守护进程将重新加载它们的配置文件。
- 最后但同样重要的是 SIGKILL。无论如何这都会终止任何进程,并且只应在进程不再响应时使用它。
kill {-2|-INT|-SIGINT|-s 2|-s INT|-s SIGINT|--signal 2|--signal INT|--signal SIGINT} [PID]
kill {-1|-HUB|-SIGHUB|-s 1|-s HUB|-s SIGHUB|--signal 1|--signal HUB|--signal SIGHUB} [PID]
kill {-9|-KILL|-SIGKILL|-s 9|-s KILL|-s SIGKILL|--signal 9|--signal KILL|--singal SIGKILL} [PID]
最终对我有用的解决方案是
#!/bin/sh
PID=`pidof productivity`
kill $PID
bash -c "exec -a productivity java -jar productivity.jar . & disown &"