2016-11-20 4 views
0

Я новичок в сценарии оболочки, я хочу, чтобы команда всегда работала. Мой .sh файл - startscrapy.shКак заставить файл .sh всегда находиться в рабочем состоянии

#!/bin/bash 
echo "Scrapyd is started now" 
scrapyd 

я изменил разрешение также chmod +x etc/init.d/startscrapy.sh

Я поместил этот файл и т.д./init.d, но он не работает. Мое понимание как сейчас "место etc/init.d является запуск .sh файлы всякий раз, когда сервер или система загружается, но я хочу, чтобы мой файл .sh быть запущен состояние всегда.

ответ

0

Использование crontab вы можете легко автоматического запуска любые скрипты в ubuntu.
Пожалуйста, выполните следующие действия,

  1. Выполните команду crontab -e, так что вы можете редактировать кронтаб.
  2. Теперь добавьте следующую строку в редактор crontab @reboot sudo <script> в вашем случае это должно быть @reboot sudo scrapyd.
  3. Теперь перезагрузите свою систему, после чего вы найдете scrapyd running.

Надеюсь, что это поможет.

0

Посмотрите на this init.d template и изменить свой один соответственно. Затем вам нужно зарегистрировать скрипт запуска с инициализацией демоном. в Ubuntu, который будет update-rc.d NAMEofDAEMON default

0

вы хотите создать демон. есть некоторые учебники по Интернету, чтобы сделать это, я взял this один для вас В заключительной части вы можете использовать другой способ регистрации скрипта, этот для ubuntu.

вам нужно поместить следующее в файл с именем вашего выбора (я буду принимать «startscrapy.sh» на данный момент) (вы можете изменить его, очевидно, в соответствии с вашими потребностями)

#!/bin/sh -e 

DAEMON="scrapyd" #Command to run 
daemon_OPT="" #arguments for your program 
DAEMONUSER="user" #Program user 
daemon_NAME="scarpyd" #Program name (need to be identical to the executable). 

PATH="/sbin:/bin:/usr/sbin:/usr/bin" #don't touch 

test -x $DAEMON || exit 0 

. /lib/lsb/init-functions 

d_start() { 
     log_daemon_msg "Starting system $daemon_NAME Daemon" 
    start-stop-daemon --background --name $daemon_NAME --start --quiet --chuid $DAEMONUSER --exec $DAEMON -- $daemon_OPT 
     log_end_msg $? 
} 

d_stop() { 
     log_daemon_msg "Stopping system $daemon_NAME Daemon" 
     start-stop-daemon --name $daemon_NAME --stop --retry 5 --quiet --name $daemon_NAME 
    log_end_msg $? 
} 

case "$1" in 

     start|stop) 
       d_${1} 
       ;; 

     restart|reload|force-reload) 
         d_stop 
         d_start 
       ;; 

     force-stop) 
       d_stop 
       killall -q $daemon_NAME || true #replace with an apropriate killing method 
       sleep 2 
       killall -q -9 $daemon_NAME || true #replace with an apropriate killing method 
       ;; 

     status) 
       status_of_proc "$daemon_NAME" "$DAEMON" "system-wide $daemon_NAME" && exit 0 || exit $? 
       ;; 
     *) 
       echo "Usage: /etc/init.d/$daemon_NAME {start|stop|force-stop|restart|reload|force-reload|status}" 
       exit 1 
       ;; 
esac 
exit 0 

Затем запустите в корневом каталоге:

chmod +x etc/init.d/startscrapy.sh 
chmod 0755 /etc/init.d/startscrapy.sh (modify by your script location) 
systemctl daemon-reload 
update-rc.d startscrapy.sh defaults 

Чтобы удалить демон, запустите в корневом каталоге:

update-rc.d -f startscrapy.sh remove 
0

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