我运行了一个名为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
2条答案
按热度按时间hmmo2u0o1#
我使用
kill
来发送SIGTERM到大多数进程。我不再使用pkill
了,相反我更喜欢pgrep
和kill
的组合...-i
用于检查是否不区分大小写,-o
仅用于输出第一个进程ID。你可以在你的
~/.bashrc_aliases
中使用这个作为alias
,或者在你的~/.bashrc
中直接使用。例如,我用它来杀死不和谐,因为它不会自己停止。只要我的20美分。
更新
终止进程的经验法则。
1.SIGTERM正在尝试以正常方式关闭进程。
1.当SIGTERM不起作用时,您可以尝试SIGINT。这是一个类似于 CTRL-C 的中断。
1.如果这两个信号都不起作用,你可以尝试SIGHUB。2这个信号在关闭终端时被发送给进程。3守护进程将重新加载它们的配置文件。
1.最后但并非最不重要的是SIGKILL。这将杀死任何进程,无论它是什么,它应该只在进程不再响应时使用。
xnifntxz2#
最后对我有效的解决方案是