我使用SSH连接到Linux,也许多次运行Linux脚本,然后使用nohup挂起这些进程,然后关闭SSH连接。在与Linux的下一个SSH连接之后,如何区分不同的脚本并获得不同的PID?
此Linux脚本将始终在屏幕上打印内容。我使用Python的paramiko库(从SSH到Linux),运行脚本并使用nohup挂起进程并将输出重定向到文件。此过程可能会多次。如何区分启动过程,找到其PID并杀死它。最好不要修改Linux脚本,因为该脚本不是我写的。
我使用脚本名称查找进程号,获得很多PID,我无法区分它们。
答案 0 :(得分:1)
您可以解析ps -eo pid,lstart,cmd
的输出,其中显示了进程ID,开始时间和路径,例如:
PID STARTED CMD
1 Mon Jun 19 21:31:08 2017 /sbin/init
2 Mon Jun 19 21:31:08 2017 [kthreadd]
3 Mon Jun 19 21:31:08 2017 [ksoftirqd/0]
==编辑==
请注意,如果远程设备是macOS,则ps
命令无法识别cmd
关键字,请改用comm
或command
,例如:ps -eo pid,lstart,comm
答案 1 :(得分:0)
使用ps命令检查运行过程。 对于仅检查shell脚本,您可以执行以下操作:-
ps -eaf |grep .sh
这将仅为您提供有关运行Shell脚本的所有信息,您可以轻松区分黑白运行脚本。
您还可以使用文件名代替“ .sh”,这样您将只获得有关该运行文件的信息。
答案 2 :(得分:0)
也许可以更改您运行的命令以执行以下操作:
nohup command.sh &
echo "$! `date`" >> runlog.txt
wait
即在后台运行命令,将其PID附加到日志中(您可能希望在此处包括更多标识信息,或者使用更易于机器阅读的格式),然后等待其完成
另一种变体是在服务器上运行tmux
(GNU screen
)并在现有会话中运行命令:
tmux new-window command
这也可以让您稍后“重新连接”到正在运行的脚本以检查输出/终止