簡體   English   中英

如何區分兩個正在運行的同名Linux腳本?

[英]How to distinguish between two running Linux scripts with the same name?

我使用SSH連接到Linux,也許多次運行Linux腳本,然后使用nohup掛起這些進程,然后關閉SSH連接。 在與Linux的下一個SSH連接之后,如何區分不同的腳本並獲得不同的PID?

該Linux腳本將始終在屏幕上打印內容。 我使用Python的paramiko庫(從SSH到Linux),運行腳本並使用nohup掛起進程並將輸出重定向到文件。 此過程可能會多次。 如何區分啟動過程,找到其PID並殺死它。 最好不要修改Linux腳本,因為該腳本不是我寫的。

我使用腳本名稱來查找進程號,獲得大量的PID,我無法區分它們。

您可以解析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

使用ps命令檢查運行過程。 對於僅檢查shell腳本,您可以執行以下操作:

ps -eaf |grep .sh

這將僅為您提供有關運行Shell腳本的所有信息,您可以輕松區分黑白運行腳本。

代替“ .sh”,您還可以指定文件名,這樣您將只獲得有關該運行文件的信息。

也許更改您運行的命令以執行以下操作:

nohup command.sh &
echo "$! `date`" >> runlog.txt
wait

例如,在后台運行命令,將其PID附加到日志中(您可能希望在此處包括更多標識信息,或者使用更容易機讀的格式),然后等待其完成

另一個變體是在服務器上運行tmux (GNU screen )並在現有會話中運行命令:

tmux new-window command

這也可以讓您稍后“重新連接”到正在運行的腳本以檢查輸出/終止

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM