Перевірте стан сценарію оболонки


1

Я запускаю CentOS 5.5 і створив сценарій init. Початок сценарію містить:

# Source function library.
if [ -f /etc/init.d/functions ]; then
        . /etc/init.d/functions
fi

Біт старту працює чудово, але у мене проблеми зі статусом і частиною зупинки:

status)
echo -n "Status of script: "
status "/bin/sh /path/to/script.sh"
RETVAL=$?
echo
;;

У PS AUX команда відображається як "/ bin / sh /path/to/script.sh", і я бачу PID. Але коли я бігаю:

./my_init_script status

Він говорить, що сценарій не працює. Чи повинен я використовувати біт / bin / sh, або просто повний шлях сценарію, або просто ім'я файлу сценарію?

Стоп-частина сценарію init використовує "killproc". Знову ж, яку команду я повинен використовувати, щоб успішно знищити всі випадки сценарію?

Відповіді:


0

Якщо це подібно до відповідної функції на Ubuntu, слід пропустити частину "/ bin / sh".

status "$DAEMON"

Ви, ймовірно, захочете використовувати щось на кшталт:

killproc -p "$PIDFILE" "$DAEMON"

У верхній частині сценарію визначте ці змінні:

DAEMON="/path/to/yourscriptname.sh"
PIDFILE="/var/run/yourscriptname/yourscriptname.pid"

І, звичайно, вам потрібно буде переконатися, що /var/run/yourscriptnameіснує.

Використовуйте наявні сценарії /etc/init.dяк моделі для свого сценарію.


Мій рядок стану читає саме це, і я вказав $ DAEMON - це те, що використовує (і працює) стартова частина, хоча повна команда запуску така: "nohup $ DAEMON >> / path / to / logfile &" У PS AUX I може побачити, як працює команда. Будь-які ідеї?
Редо

@reado: Спробуйте лише ім'я сценарію без каталогу. На даний момент у мене немає системи Centos / RH, щоб перевірити її. Ви починаєте свій сценарій sh? Що станеться, якщо ви запускаєте його без нього (використовуйте #!/bin/shвгорі сценарію, chmod +xйого і запускайте з нього /path/to/scriptname)? Чи statusпрацює в такому випадку? Чи порівняли ви свій сценарій init із існуючим?
Денніс Вільямсон

Я фактично не використовую PID-файл - я вперше пишу ці речі і думав, що мені це не потрібно. Чи повинен я мати його? Якщо так, то як я додати це до існуючого методу запуску? Чи є команда, яку я можу виконати, щоб захопити PID новоствореного процесу та записати вихід у файл, який я вибрав?
Редо

@reado: Як я вже сказав, у мене зараз немає системи Centos, щоб перевірити цей матеріал, і я рекомендую слідувати існуючим сценаріям як моделі. Можливо, якщо ви встановите PIDFILEзмінну, яка initзробить правильно для вас. Також вам може знадобитися блок коментарів на початку файлу у певному форматі. Знову існуючі сценарії покажуть вам шлях.
Денніс Вільямсон

Відсортовано !! Я створив функціональність файлу PID у своєму скрипті, зберег його у / var / run та змінив і зупинку, і статус, щоб використовувати -p "$ PIDFILE" "$ DAEMON". Тепер обидва працюють! Велике спасибі, дуже вдячний! :-)
Редо
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.