Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > *NIX системы: Общие вопросы > как значение пид-а в килл подставить


Автор: quasi 6.1.2008, 15:34
как значение пид-а в килл подставить?
Код

cat /var/run/asterisk.pid
18842
kill -s 9 18842

Автор: onsql 6.1.2008, 15:38
Вроде так:
Код

kill -s 9 `cat /var/run/asterisk.pid`

Автор: quasi 6.1.2008, 17:11
Хм, а вот так не рабоатет
Код

stop_cmd="kill -s 9 `/bin/cat /var/run/asterisk.pid`"

значение не подставняелся

Автор: onsql 6.1.2008, 17:22
Ну вот попробуй такой скрипт написать - чего он выведет? (не забудь на него chmod a+x сделать)
Код

#!/bin/sh
stop_cmd="kill -s 9 `cat /var/run/asterisk.pid`"
echo $stop_cmd
#exec $stop_cmd


Тут ведь дофига допущений. Что файл asterisk.pid (кстати, а не asteriks.pid?) существует, что в нем лежит пид, что процесс с таким пидом запущен ну и.т.д. У меня при наличии файла выводит из него значение. Может ошибки какие то возникают?

Автор: quasi 6.1.2008, 19:00
проблема именно в том что строчка не рабоатет в скрипте когда ее выполняешь так  /etc/rc.d/asterisk stop
Код

# cat /etc/rc.d/asterisk
#!/bin/sh
#
# $NetBSD: asterisk.sh,v 1.2 2006/11/01 18:59:16 mjl Exp $
#
# PROVIDE: asterisk
# REQUIRE: DAEMON
# KEYWORD: shutdown
#
# You will need to set some variables in /etc/rc.conf to start Asterisk:
#
# asterisk=YES

if [ -f /etc/rc.subr ]
then
        . /etc/rc.subr
fi

name="asterisk"
#rcvar=$name
#command="su asterisk -c /usr/pkg/sbin/asterisk"
#required_files="/usr/pkg/etc/asterisk/asterisk.conf"

start_cmd="/usr/pkg/sbin/asterisk -U asterisk -G asterisk"
restart_cmd="kill -s 9 `/bin/cat /var/run/asterisk.pid` && /usr/pkg/sbin/asterisk -U asterisk -G asterisk"
stop_cmd="kill -s 9 `/bin/cat /var/run/asterisk.pid`"
asterisk_nice="-20"

load_rc_config $name
run_rc_command "$1"

а если....
Код

# /etc/rc.d/asterisk stop
kill: unknown signal 9; valid signals:
HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM URG STOP TSTP CONT CHLD TTIN TTOU IO XCPU XFSZ VTALRM
PROF WINCH INFO USR1 USR2 PWR RT0 RT1 RT2 RT3 RT4 RT5 RT6 RT7 RT8 RT9 RT10 RT11 RT12 RT13 RT14 RT15 RT16 RT17 RT18 RT19
RT20 RT21 RT22 RT23 RT24 RT25 RT26 RT27 RT28 RT29 RT30
# ps aux | grep asterisk
asterisk 18361  0.0  1.5   4420   8080 ?     Ssa  12:09AM   0:44.89 /usr/pkg/sbin/asterisk -U asterisk -G asterisk
root     17704  0.0  0.0    228      4 ttyp0 R+    2:00AM   0:00.00 grep asterisk (ksh)
# cat /var/run/asterisk.pid
18361


Автор: onsql 6.1.2008, 19:14
Аааа... То-то я смотрю килл какой то странный... Надо вот так
Код

restart_cmd="kill -9 `/bin/cat /var/run/asterisk.pid` && /usr/pkg/sbin/asterisk -U asterisk -G asterisk"
stop_cmd="kill -9 `/bin/cat /var/run/asterisk.pid`"


Ну или kill -sKILL `/bin/cat /var/run/asterisk.pid`

Автор: quasi 7.1.2008, 09:57
Хе, спасибо, просто я когда-то делал просто -9 и не получалось убить по инени процесса, а не по пиду, поэтому сразу так не стал делать, а в ФриБСД по имени срабатывает. От чего это зависит? Может где какую переменную свистнуть надо?

Автор: ZeeLax 7.1.2008, 10:09
Так как нельзя однозначно определить пид по имени, убить можно только все процессы, с таким именем.
Код

man killall

Автор: MAKCim 7.1.2008, 10:33
man pkill

Автор: Afonya 7.1.2008, 12:33
cat /var/run/asterisk.pid | xargs kill -9

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)