如何区分两个正在运行的同名Linux脚本?

时间:2019-07-27 07:41:41

标签: linux shell paramiko nohup

我使用SSH连接到Linux,也许多次运行Linux脚本,然后使用nohup挂起这些进程,然后关闭SSH连接。在与Linux的下一个SSH连接之后,如何区分不同的脚本并获得不同的PID?

此Linux脚本将始终在屏幕上打印内容。我使用Python的paramiko库(从SSH到Linux),运行脚本并使用nohup挂起进程并将输出重定向到文件。此过程可能会多次。如何区分启动过程,找到其PID并杀死它。最好不要修改Linux脚本,因为该脚本不是我写的。

我使用脚本名称查找进程号,获得很多PID,我无法区分它们。

3 个答案:

答案 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关键字,请改用commcommand,例如: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

这也可以让您稍后“重新连接”到正在运行的脚本以检查输出/终止