Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
debian:start:run-with-nohup [2016/10/26 07:49] mirocowdebian:start:run-with-nohup [2019/12/09 20:13] (текущий) mirocow
Строка 1: Строка 1:
-{{tag>php service nohup init.d}}+{{tag>debian remove systemd sysv system init}}
  
 ====== Запуск PHP скрипта с использованием nohup ====== ====== Запуск PHP скрипта с использованием nohup ======
Строка 5: Строка 5:
 ===== Debian / Ubuntu ===== ===== Debian / Ubuntu =====
  
 +==== sysv-init ====
  
 nano /etc/init.d/price_parser \\ nano /etc/init.d/price_parser \\
Строка 24: Строка 25:
 . /lib/lsb/init-functions . /lib/lsb/init-functions
  
-pname="price_parser" +PNAME="price_parser" 
-PATH="/home/some/path/to/app"+PPATH="/home/some/path/to/app"
 SCRIPT="/usr/bin/php ./yii some/cotroller/action" SCRIPT="/usr/bin/php ./yii some/cotroller/action"
-PIDFILE="/var/run/${pname}.pid" +PIDFILE="/var/run/${PNAME}.pid" 
-LOCKFILE="/var/lock/${pname}"+LOCKFILE="/var/lock/${PNAME}"
  
 RETVAL=0 RETVAL=0
  
 start() { start() {
-    echo -n "Starting $pname : "+    echo -n "Starting $PNAME : "
     if [ -s ${PIDFILE} ]; then     if [ -s ${PIDFILE} ]; then
        RETVAL=1        RETVAL=1
Строка 39: Строка 40:
        echo        echo
     else     else
-       cd ${PATH} && nohup ${SCRIPT} >/dev/null 2>&1 &+       cd ${PPATH} && nohup ${SCRIPT} >/dev/null 2>&1 &
        RETVAL=$?        RETVAL=$?
        PID=$!        PID=$!
Строка 50: Строка 51:
 stop() { stop() {
     if [ -s ${PIDFILE} ]; then     if [ -s ${PIDFILE} ]; then
-        echo -n "Shutting down $pname : "+        echo -n "Shutting down ${PNAME} : "
         kill -9 `cat ${PIDFILE}`         kill -9 `cat ${PIDFILE}`
         RETVAL="$?"         RETVAL="$?"
Строка 66: Строка 67:
  
 restart() { restart() {
-    echo -n "Restarting $pname : "+    echo -n "Restarting ${PNAME} : "
     stop     stop
     sleep 2     sleep 2
Строка 80: Строка 81:
     ;;     ;;
     status)     status)
-        status ${pname}+        status ${PNAME}
     ;;     ;;
     restart)     restart)
Строка 90: Строка 91:
  
 exit 0 exit 0
 +</code>
 +
 +==== Upstart ====
 +
 +Умерла
 +==== systemd ====
 +
 +  * [[https://community.vscale.io/hc/ru/community/posts/211805669-%D0%92%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5-%D0%B2-systemd-%D0%A1%D0%B5%D1%80%D0%B2%D0%B8%D1%81%D1%8B-%D1%8E%D0%BD%D0%B8%D1%82%D1%8B|Введение в systemd. Сервисы, юниты]]
 +  * https://habrahabr.ru/post/275645/
 +  * http://pikabu.ru/story/systemd_dlya_samyikh_malenkikh_chast_i_znakomstvo_4285483
 +  * [[https://wiki.archlinux.org/index.php/Systemd_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)]]
 +  * [[debian:remove-systemd]]
 +
 +=== Type ===
 +
 +  * Type=simple (по умолчанию): systemd предполагает, что служба будет запущена незамедлительно. Процесс при этом не должен разветвляться. Не используйте этот тип, если другие службы зависят от очередности при запуске данной службы. Исключение - активация сокета
 +  * Type=forking: systemd предполагает, что служба запускается однократно и процесс разветвляется с завершением родительского процесса. Используйте данный тип для запуска классических демонов за исключением тех случаев, когда, как вам известно, в таком поведении процесса нет необходимости. Вам следует также определить PIDFile=, чтобы systemd могла отслеживать основной процесс
 +  * Type=oneshot: полезен для скриптов, которые выполняют одно задание и завершаются. Вам может понадобиться также установить параметр RemainAfterExit=yes, чтобы systemd по-прежнему считала процесс активным, даже после его завершения
 +  * Type=notify: идентичен параметру Type=simple, но с той оговоркой, что демон пошлет systemd сигнал о своей готовности. Эталонная реализация данного уведомления представлена в libsystemd-daemon.so
 +  * Type=dbus: сервис считается находящимся в состоянии готовности, когда определенное BusName появляется в системной шине DBus
 +  * Type=idle: systemd will delay execution of the service binary until all jobs are dispatched. Кроме того, поведение очень похоже на Type=simple.
 +
 +=== Расположения ===
 +
 +  * /usr/lib/systemd/system - системные юниты, поставляемые обычно вместе с приложениями;
 +  * /run/systemd/system - динамически создаваемые юниты (т.е. на лету);
 +  * /etc/systemd/system - юниты и исправления, внесённые администратором 
 +
 +=== Запуск ===
 +
 +  * service yii-some-listen status
 +  * service yii-some-listen stop
 +  * service yii-some-listen start
 +  * service yii-some-listen restart
 +
 +=== Пример ===
 +
 +nano /etc/systemd/system/yii-some-listen.service
 +<code bash>
 +[Unit]
 +Description=Yii some-listen
 +After=mysql.service apache2.service
 +Requires=
 +
 +[Service]
 +PIDFile=/var/run/yii-some-listen.pid
 +WorkingDirectory=/home/some/path/to/app
 +ExecStart=nohup /usr/bin/php /home/some/path/to/app/yii some/cotroller/action start >/dev/null 2>&1
 +ExecStop=/usr/bin/php /home/some/path/to/app/yii some/cotroller/action stop >/dev/null 2>&1
 +#Restart=always
 +#RestartSec=5
 +RemainAfterExit=yes
 +User=user
 +Group=www-data
 +
 +[Install]
 +WantedBy=multi-user.target
 +Alias=yii-some-listen.service
 +</code>
 +
 +Or usep PID file
 +
 +nano /etc/systemd/system/yii-some-listen.service
 +<code bash>
 +[Unit]
 +Description=Yii some-listen
 +After=mysql.service apache2.service
 +Requires=
 +
 +[Service]
 +PIDFile=/var/run/yii-some-listen.pid
 +WorkingDirectory=/home/some/path/to/app
 +ExecStart=nohup /usr/bin/php /home/some/path/to/app/yii some/cotroller/action start >/dev/null 2>&1
 +ExecStop=pkill -9 -F /var/run/yii-some-listen.pid
 +#Restart=always
 +#RestartSec=5
 +RemainAfterExit=yes
 +User=user
 +Group=www-data
 +
 +[Install]
 +WantedBy=multi-user.target
 +Alias=yii-some-listen.service
 +</code>
 +==== Mudar ====
 +
 +==== Epoch ====
 +
 +
 +===== CentOS / Fedora =====
 +
 +<code bash>
 </code> </code>