RHEL6 Не удается запустить мой скрипт при завершении работы и перезагрузке

Я пытаюсь выполнить скрипт при каждом завершении работы и перезагрузке, но сценарий никогда не запускается.

  1. Я создал скрипт baseRhel64 и сохранил его в /etc/rc.d/init.d
  2. Я сделал chkconfig --add baseRhel64
  3. Я включил в скрипт

     #chkconfig --list # chkconfig: 06 10 10 
  4. Я проверил, что скрипт S10, созданный в /etc/rc0.d/S10baseRhel64 и /etc/rc6.d/S10baseRhel64

Ниже приведен мой сценарий:

 #!/bin/sh #chkconfig --list # chkconfig: 06 10 10 start(){ echo "`basename $0` start" touch /root/installscripts/test1 } stop(){ echo "`basename $0` stop" touch /root/installscripts/test2 touch /root/installscripts/"`basename $0`" } case "$1" in start) start;; stop) stop;; *) echo $"Usage: $0 {start|stop}" RETCAL=1 esac exit 0 

  • Правильно отключите SSD во время выключения
  • Выполнить команду перед выключением
  • Как диагностировать висит на выключении
  • Объяснение файла - org.freedesktop.login1.policy
  • Отключение от X без среды рабочего стола
  • Использовать rtcwake без ввода пароля
  • Предотвращение завершения работы с использованием сценария оболочки при завершении работы
  • Как запустить скрипт при выключении на Debian 9 или Raspbian 8 (Jessie)
  • 3 Solutions collect form web for “RHEL6 Не удается запустить мой скрипт при завершении работы и перезагрузке”

    Если вы проверите то, что находится в /etc/rc0.d и /etc/rc6.d , вы увидите, что перед тем, как перейти к вашей службе, система сначала запустит killall (приоритет 00), а затем halt (приоритет 01).

    Хотя ваша служба была запланирована на следующий, компьютер уже остановился.

     lrwxrwxrwx 1 root root 17 Sep 28 2012 S00killall -> ../init.d/killall lrwxrwxrwx 1 root root 14 Sep 28 2012 S01halt -> ../init.d/halt lrwxrwxrwx 1 root root 14 Jul 8 21:16 S10test -> ../init.d/test 

    Что бы я сделал, если бы я был вами, это включить скрипт на уровне запуска, который вы обычно используете, скажем, 345 а затем поменять начало с остановкой, поскольку все демоны chkconfig: ed, которые будут запущены в вашем текущем уровне выполнения, будут вызываться при остановке и перезагрузка с помощью stop arg, прежде чем она доберется до сервисов, которые она должна начать .

    Если вы хотите, чтобы ваш скрипт был запущен в последний раз, прежде чем убить все, а затем остановите свой компьютер, проверьте, что является самым высоким (мои K92iptables , поэтому для меня это будет> 92 для остановки приоритета).

    Итак, chkconfig --del baseRhel64 , затем chkconfig --del baseRhel64 скрипт так, чтобы строка chkconfig --del baseRhel64 # chkconfig: 345 10 93

    Тогда ваш скрипт будет выглядеть примерно так: имена функций запуска и остановки заменены:

     #!/bin/sh #chkconfig --list # chkconfig: 345 10 93 stop(){ echo "`basename $0` stop" touch /root/installscripts/test1 } start(){ echo "`basename $0` start" touch /root/installscripts/test2 touch /root/installscripts/"`basename $0`" } case "$1" in start) start;; stop) stop;; *);; echo $"Usage: $0 {start|stop}" RETCAL=1 esac exit 0 

    Когда вы настраиваете собственный сценарий инициализации в RH EL 6, названный, например, «имя_сервера», вам необходимо создать на этапе запуска файл блокировки / var / lock / subsys / service_name, иначе сценарий не будет выполнен во время выключение системы (init 0 или init 6). В то же время вы должны установить «rm -f» файла блокировки во время фазы останова.

    У меня есть прекрасное решение для вас a) Сценарий, подобный этому

     #!/bin/sh # # localshutdown # # chkconfig: 06 01 25 # description: localshutdown script # ### BEGIN INIT INFO # Provides: # Required-Start: # Required-Stop: # Should-Start: # Should-Stop: # Default-Start: 0 6 # Default-Stop: # Short-Description: # Description: ### END INIT INFO # Source function library. start() { echo "Your commands here" touch /root/funziona #use it for a test } stop() { echo "nothing" >/dev/null 2>&1 } restart() { stop start } case "$1" in start) start $1 ;; stop) stop $1 ;; restart) restart ;; *) echo $"Usage: $0 {start|stop|restart}" exit 2 esac exit $? 

    затем

     chkconfig --add /etc/init.d/yourscript.sh 

    тогда

     chkconfig --level 06 yourscript.sh on chkconfig --level 12345 yourscript.sh off 

    Протестировано и работает

    Linux и Unix - лучшая ОС в мире.