LinuxForum.Fans
Тема

Остановка bash-скрипта

Автор: valet 30 сообщений 9781 просмотров
#283651

"Fat-Zer" написал:
я так понял это имелось в виду:
Нет, конкретнее в моем примере куда впихнуть - у меня же вообще одна команда:
text
cat file | xargs -t -P 1 -n1 ./script2

И куда тут внедрить проверку?

"Fat-Zer" написал:
а то, в каком порядке sort отсортировал вам не понравилось О_о ?
Да :) не понравилось, sort -R не отрабатывает правильно с кириллицей, там надо закомментировать. А конструкция ниже работает.

Какие-то сложные танцы с бубном получаются - неужели все так сложно и нельзя никак проще.
#283868

Назначить через алиас в баше короткую команду на скрипт который прибьет другой скрипт, идентификатором будет служить например pid в файле.

#283876

"mogul82" написал:
Назначить через алиас в баше короткую команду на скрипт который прибьет другой скрипт, идентификатором будет служить например pid в файле.
А каким образом он собственно его прибьет, В этом то и вопрос что прибить скрипт сложно. Ну по крайней мере я до сих пор е вижу решения.
#283877

PID у любого процесса есть же.

text
# pidof bash
2522

Далее, killall 2522 от рута :)

#283882

на лоре была идея использовать cgroups. ИМХО это будет Ъ.
сам попробовать не могу т.к. у меня они из ядра выпилены...
ещё вариант, обходить самому всех детей и убивать, но это не хорошо т.к. очень плохо т.к. черевато состоянием гонки...

"yars" написал:
Далее, killall 2522 от рута

бред какой-то... не?

#283884
"Fat-Zer" написал:
бред какой-то... не?

Не, это всего лишь пример, на самом деле, так делать я и не собирался. А в чем проблема-то? У скрипта же тоже PID есть, что мешает его прибить?
Или я чего-то не понимаю?

#283887
"yars" написал:
Не, это всего лишь пример, на самом деле, так делать я и не собирался. А в чем проблема-то? У скрипта же тоже PID есть, что мешает его прибить?

в том что killall убивает по имени...
а вообще тут ИМХО задача равносильная «убить процесс и всех потомков»

#283888

"yars" написал:
Не, это всего лишь пример, на самом деле, так делать я и не собирался. А в чем проблема-то? У скрипта же тоже PID есть, что мешает его прибить?
Или я чего-то не понимаю?
Прочитайте топик :) - это не помогает. Это не убивает те процессы, которые запущены этим скриптом, это убивает только сам скрипт, а что толку то...
#283889

"Fat-Zer" написал:
а вообще тут ИМХО задача равносильная «убить процесс и всех потомков»
да, именно, в этом то и вся соль.
#283891

/рукалицо

всё намного проще:

man kill написал:
The default signal for kill is TERM. Use -l or -L to list available signals. Particularly useful signals include HUP, INT, KILL, STOP, CONT, and 0. Alternate signals may be specified in three ways: -9 -SIGKILL -KILL. Negative PID values may be used to choose whole process groups; see the PGID column in ps command output. A PID of -1 is special; it indicates all processes except the kill process itself and init.
text
alexander@goblin /tmp $ cat script1.sh
#!/bin/bash
sleep 300
alexander@goblin /tmp $ ./script1.sh & echo $! >/tmp/pid
[1] 20998
alexander@goblin /tmp $ ps aux | grep sleep
1000     20999  0.0  0.0   7724   624 pts/5    S    17:48   0:00 sleep 300
1000     21001  0.0  0.0  10300   916 pts/5    S+   17:49   0:00 grep --colour=auto sleep
alexander@goblin /tmp $ kill -9 -$(cat /tmp/pid)
[1]+  Убито              ./script1.sh
alexander@goblin /tmp $ ps aux | grep sleep
1000     21004  0.0  0.0  10300   916 pts/5    S+   17:49   0:00 grep --colour=auto sleep
Войдите или зарегистрируйтесь, чтобы ответить.