Показать страницуИстория страницыСсылки сюдаCopy this pageExport to MarkdownODT преобразованиеНаверх Вы загрузили старую версию документа! Сохранив её, вы создадите новую текущую версию с этим содержимым. Медиафайлы{{tag>php service nohup init.d init}} ====== Запуск PHP скрипта с использованием nohup ====== ===== Debian / Ubuntu ===== ==== sysv-init ==== nano /etc/init.d/price_parser \\ chmod +x /etc/init.d/price_parser <code bash> #!/bin/sh ### BEGIN INIT INFO # Provides: price_parser # Required-Start: $remote_fs $syslog # Required-Stop: $remote_fs $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Stop/start price_parser ### END INIT INFO # Author: Mirocow <mr.mirocow@gmail.com> . /lib/init/vars.sh . /lib/lsb/init-functions PNAME="price_parser" PPATH="/home/some/path/to/app" SCRIPT="/usr/bin/php ./yii some/cotroller/action" PIDFILE="/var/run/${PNAME}.pid" LOCKFILE="/var/lock/${PNAME}" RETVAL=0 start() { echo -n "Starting $PNAME : " if [ -s ${PIDFILE} ]; then RETVAL=1 echo -n "Already running !" echo else cd ${PPATH} && nohup ${SCRIPT} >/dev/null 2>&1 & RETVAL=$? PID=$! [ $RETVAL -eq 0 ] && touch ${LOCKFILE} echo echo $PID > ${PIDFILE} fi } stop() { if [ -s ${PIDFILE} ]; then echo -n "Shutting down ${PNAME} : " kill -9 `cat ${PIDFILE}` RETVAL="$?" if [ $RETVAL -eq 0 ]; then rm -f ${LOCKFILE} rm -f ${PIDFILE} fi else RETVAL=1 echo -n "Already stoped !" echo fi return "$RETVAL" } restart() { echo -n "Restarting ${PNAME} : " stop sleep 2 start } case "$1" in start) start ;; stop) stop ;; status) status ${PNAME} ;; restart) restart ;; *) echo "Usage: $0 {start|stop|status|restart}" ;; esac 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>СохранитьПросмотрРазличияОтменить Сводка изменений Примечание: редактируя эту страницу, вы соглашаетесь на использование своего вклада на условиях следующей лицензии: CC0 1.0 Universal