我有這個命令在bash腳本啓動:在寫命令的PID可變
rsync -av $sourcedir/ $destdir/
我怎麼在一個變量存儲PID的特定命令在同一個腳本?
我試着用:
rsync -av --stats $sourcedir/ $destdir/ && pid=$(echo $$)
但PID報道在日誌文件中的操作不同於一個打印出來呼應$ PID
感謝您的幫助!
我有這個命令在bash腳本啓動:在寫命令的PID可變
rsync -av $sourcedir/ $destdir/
我怎麼在一個變量存儲PID的特定命令在同一個腳本?
我試着用:
rsync -av --stats $sourcedir/ $destdir/ && pid=$(echo $$)
但PID報道在日誌文件中的操作不同於一個打印出來呼應$ PID
感謝您的幫助!
rsync -av --stats $sourcedir/ $destdir/ & pid=$!
注意&
用法在這裏。你並行運行命令。
如果您rsync && pid=$!
,這是錯誤的,因爲該命令(rsync
)是在您進行分配(pid=$!
)點已經完成,所以它是沒有意義保存它的PID爲明顯的原因的變量。
PID存儲在$!
中,您可能想要在程序運行時獲取PID,而不是在完成後獲取PID。
rsync -av --stats $sourcedir/ $destdir/ & pid=$!
爲什麼你想知道這個命令的PID?如果您正在同步運行它,那麼當您嘗試獲取其PID時,該過程將完成,因此PID將不再存在,或者將引用不同的過程。 – tripleee 2012-08-06 08:41:18
'$$'是當前shell的進程ID,而不是最近運行的命令。另外,'pid = $$'就足夠了。 – chepner 2012-08-06 12:49:06