enquanto script de shell de loop [fechado]

0

Eu escrevi um script shell do Linux (bash) usando while loop e mantive o comando sleep para executar o script a cada 60 segundos e a saída é redirecionada para outro arquivo. Depois de algumas horas eu parei o script e ele não parou de executar e eu deletei o script ainda está em execução e o arquivo de saída é atualizado a cada 60 segundos. Eu pude ver o comando sleep no processo executado pelo Linux. Eu tentei matar o PID do sono usando kill -9 comando PID. Sem uso. Está no meu servidor de produção. Alguém pode nos ajudar. Como devemos parar a execução do script?

    
por user150439 07.01.2016 / 08:14

3 respostas

0

O comando sleep é chamado pelo seu script. Se você matar o comando sleep , o script avançará para o próximo comando. Você precisa examinar o pid pai (PPID) do comando sleep usando ps , por exemplo. Em seguida, procure o pid pai correspondente (PPID) e mate o processo que pertence a esse PID

ps -ef |(head -1; grep sleep)
UID        PID  PPID  C STIME TTY          TIME CMD
lambert   4062  4041  0 08:47 pts/3    00:00:00 sleep 5

ps -p 4041
  PID TTY          TIME CMD
 4041 pts/3    00:00:00 myscript.sh

kill 4041
    
por 07.01.2016 / 08:48
0

Pode estar em execução em segundo plano:

       $ jobs
       [1]+  Running                 sleep 100 &

       $ kill %1
       [1]+  Terminated              sleep 100

Você também pode usar pkill e pgrep

Use o killall para interromper todas as instâncias.

    
por 07.01.2016 / 08:19
0

Tente usar 'ps -ef | grep seu nome de script 'para encontrar o pid da sua tarefa. Então use 'kill -9 seu pid ' para matar o processo.

    
por 07.01.2016 / 08:42

Tags