好吧,所以我最近遇到了一個案例,我最後得到了我不需要的重複過程。現在很明顯,我試圖弄清楚爲什麼我會以重複的方式結束,但同時我想知道是否有更好的方法來清除它們。killall,不包括具體的進程ID
目前我正在運行killall <process name>
,然後手動觸發進程的單個實例。但是,我真正想要做的是運行killall
,它以某種方式忽略了特定的進程ID。
實際上,有問題的過程是一個帶有獨特名稱的bash腳本,所以我可以很容易地用killall
殺死它的所有重複項,並且我想編輯它,以便在啓動時它將殺死所有除了當前進程($$
)之外的其他自身實例,以便更容易。
我知道我大概可以用ps
和grep
做到這一點,並過濾掉當前的進程ID後的結果反饋到kill
,但是這是唯一的辦法,還是有更好的選擇(除了防止重複第一地方,我還沒有想出)?
你是不是指'grep -v「$$」'去結束那裏?這或許可以在開始時使用合適的過濾器。例如,要整合@ Konato_K的答案可能是這樣的:'pgrep「$(basename」$ 0「)」| grep -v「$$」'就足夠了?它可能需要通過'xargs'然後被送入'殺死',雖然? – Haravikk 2014-11-27 10:58:18