2017-02-21 2 views
1

Я запускал консоль ubuntu, когда я ввожу следующую команду, все процессы были бы полностью уничтожены.Команда kill не работает корректно в сценарии bash

kill -9 $(ps -ef | grep 'job1/' | grep -v grep| awk '{print $2}') 

Но когда я пытался использовать crontab для вызова сценария в обычном режиме, все пошло не так.

#!/bin/bash 
pid=$(ps -ef | grep 'job1/' | grep -v grep | awk '{print $2}') 
echo $pid 
kill -9 $pid 
# the following commands were never executed 
sleep 5 
/data/job1/tomcat8/bin/startup.sh 

Результат был так же, как это:

15432 15438 
Killed 

кажется, только что убил свою работу, но не будет выполнять следующие команды. Есть идеи?

+5

Вы случайно убили сценарий? – John3136

+0

Ах, точно !!! Большое спасибо! Вы действительно сэкономите мой день! :) – Soony

+2

вам следует подумать об использовании 'pgrep' или' pkill' – oliv

ответ

1

Если вы собираетесь создать сценарий, который должен быть установлен PID, тогда вам нужно быть очень осторожным, чтобы вы убили правильные вещи.

У вас уже есть grep -v grep, чтобы избежать самоубийства самой grep, но кажется, что вы не вложили ничего, чтобы защитить себя от само убийства сценария. Поскольку вы знаете свой собственный PID, вы могли бы grep -v, но что, если вы 123, и одна из вещей, которую вы хотите убить, - 1234? Вероятно, безопаснее идти по имени сценария.

Смежные вопросы