Я поместил исполняемый файл в файл сценария оболочки abc.sh. Теперь я хочу добавить одну строку в этом abc.sh, чтобы узнать, запускается ли она до запуска моего скрипта или нет, и если да, то убивайте этот исполняемый файл.
Вы можете использовать pgrep
для поиска исполняемых файлов с заданным именем процесса:
$ pgrep firefox 3212 $ pgrep firef 3212
Используйте -l
для печати имен во втором столбце:
$ pgrep -l firefox 3212 firefox
Используйте параметр -x
для соответствия процессам, чье имя точно соответствует шаблону.
$ pgrep -x firefox 3212 $ pgrep -x firef $
Когда вы возвращаете PID исполняемого файла, вы можете его убить. Вы также можете сделать это за один шаг, используя команду pkill
если вы не заинтересованы в значении PID:
$ pkill -x firefox
Он будет убивать процесс с заданным именем. Если такого процесса нет, ничего не произойдет, кроме установки $? переменная до 1.
# killall executable_name
или
# pkill executable_name
сделают это, но это плохая идея . В этой статье очень хорошо объясняется, почему (по сути, имена программ совершенно произвольны, и вы можете легко убить неправильный процесс) и как это сделать (реструктурировать программу, чтобы вам не нужно было убивать по имени).