經常運行一個程序時,表面上已經終止了,實際上還在后臺運行。一來呢,它可能占據端口,導致端口復用的時候報錯。二來呢,它可能占用GPU,讓你顯存直接少一塊。
尤其是在多進程程序,假如運行“python train.py”,直接后臺起了8個進程,你需要終止這些進程的話,你可以用最原始的方法:
ps -ef | grep "python train.py"
# 8 個 pid
kill -9 <pid> # 運行8次
很直接,但是不夠優雅。而且效率低下。你可以這樣:
kill -9 $(pgrep -f "python train.py")
一行命令,就能終止所有的相關進程。用這個命令時需要特別小心,確保不傷及無辜進程。
為了更優雅一點,我們可以把這行命令寫到bashrc或者zshrc里:
vim ~/.bashrc
# paste the following
mykill() {kill -9 $(pgrep -f "$1")
}
source ~/.bashrc
然后,我們就可以:
mykill "python train.py"
這樣就很優雅了~