2012-08-06 42 views
0

我有這個命令在bash腳本啓動:在寫命令的PID可變

rsync -av $sourcedir/ $destdir/

我怎麼在一個變量存儲PID的特定命令在同一個腳本?

我試着用:

rsync -av --stats $sourcedir/ $destdir/ && pid=$(echo $$)

但PID報道在日誌文件中的操作不同於一個打印出來呼應$ PID

感謝您的幫助!

+1

爲什麼你想知道這個命令的PID?如果您正在同步運行它,那麼當您嘗試獲取其PID時,該過程將完成,因此PID將不再存在,或者將引用不同的過程。 – tripleee 2012-08-06 08:41:18

+0

'$$'是當前shell的進程ID,而不是最近運行的命令。另外,'pid = $$'就足夠了。 – chepner 2012-08-06 12:49:06

回答

2
rsync -av --stats $sourcedir/ $destdir/ & pid=$! 

注意&用法在這裏。你並行運行命令。

如果您rsync && pid=$!,這是錯誤的,因爲該命令(rsync)是在您進行分配(pid=$!)點已經完成,所以它是沒有意義保存它的PID爲明顯的原因的變量。

2

PID存儲在$!中,您可能想要在程序運行時獲取PID,而不是在完成後獲取PID。

rsync -av --stats $sourcedir/ $destdir/ & pid=$!