![](/img/trans.png)
[英]Conflict between two linux shared objects defining the same function name
[英]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
關鍵字,請改用comm
或command
,例如: 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.