Скрипт /usr/bin. Как убить созданный им процесс?

Модератор: Модераторы разделов

fergios
Сообщения: 512
ОС: debian stable

Скрипт /usr/bin. Как убить созданный им процесс?

Сообщение fergios »

Скрипт /usr/bin/showtime выводит время на консоль tty1 :
if [ $(echo &>/dev/null > /dev/tty1; echo $?) -eq 0 ]
then
while [ 1 -lt 2 ]
do
clear > /dev/tty1
date +%H:%M:%S > /dev/tty1
sleep 1
done
else
echo "Служба showtime. Управление через sudo /etc/init.d/timeconsoled start|stop"
exit 2
fi
Запустили скрипт.
Как найти PID процесса этого скрипта?
Как по PID убить этот процесс, чтобы скрипт перестал работать.

ps.: можно и не по PID, а по другому, главное убить его :-)

Такой код не работает :
PID="$(ps ax | grep "/usr/bin/showtime" | awk '{ print $1 }')"
if [ -n "$PID" ]
then
echo "Останавливаем демон..."
kill -15 "$PID"
sleep 1
if [ -z "$(ps ax | grep "/usr/bin/showtime" | awk '{ print $1 }')" ]
then
echo "Демон остановлен"
clear > /dev/tty1
else
echo "Остановка не удалась"
exit 1
fi
else
echo "Демон не запущен!"
fi
fi

Пишет, что не может найти PID, или что-то что несуществует процесс.

p.s: OS Ubuntu 10.04
Спасибо сказали:
Аватара пользователя
/dev/random
Администратор
Сообщения: 5409
ОС: Gentoo

Re: Скрипт /usr/bin. Как убить созданный им процесс?

Сообщение /dev/random »

Запускайте скрипт так:

showtime & echo $! > ~/showtime.pid

А убивайте так:

kill $(cat ~/showtime.pid)

Если всё это делается не от пользователя, а глобально, то вместо "~/showtime.pid" используйте что-то вроде "/var/run/showtime.pid"
Спасибо сказали:
fergios
Сообщения: 512
ОС: debian stable

Re: Скрипт /usr/bin. Как убить созданный им процесс?

Сообщение fergios »

thank,
но там если цикл while то по правильному он должен останавливаться исходя из внутреннего события (которое внутри цикла, в теле программы), а не киллом процесса.
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: Скрипт /usr/bin. Как убить созданный им процесс?

Сообщение sash-kan »

fergios писал(а):
22.08.2010 21:10
по правильному он должен
где об этом можно прочитать?
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
SLEDopit
Модератор
Сообщения: 4823
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL

Re: Скрипт /usr/bin. Как убить созданный им процесс?

Сообщение SLEDopit »

между прочим:
while [ 1 -lt 2 ] = while true

зы. и мне немного непонятно, почему бы вместо while не использовать тот же watch. а еще более не понятен смысл этого скрипта (:
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Скрипт /usr/bin. Как убить созданный им процесс?

Сообщение drBatty »

fergios писал(а):
22.08.2010 21:10
но там если цикл while то по правильному он должен останавливаться исходя из внутреннего события (которое внутри цикла, в теле программы), а не киллом процесса.

вы и так написали что-то непонятное, потому продолжим - ваш скрипт(1) может создавать файл, а другой скрипт (2) может этот файл убивать. А в цикле можно проверять наличие файла(нет файла - выходим из цикла и из (1)). Можно(наверное) сделать это всё и с помощью kill и сигналов. Но я не знаю как.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали: