온 아마존 S3 리눅스 인스턴스, 나는 두 개의 스크립트 호출이 start_my_app
와 stop_my_app
시작 및 정지하는 영원히 (다시 내 Node.js를 응용 프로그램을 실행하는). 이 스크립트를 사용하여 Node.js 애플리케이션을 수동으로 시작하고 중지합니다. 여태까지는 그런대로 잘됐다.
내 문제 : start_my_app
시스템을 부팅 할 때마다 실행되도록 설정하고 싶습니다 . 나는 안에 파일을 추가해야하고 init.d
그것을 올바른 디렉토리에 심볼릭 링크하는 방법을 알고 rc.d
있지만 실제로 내가 넣은 파일 안에 무엇이 들어가야하는지 알 수 없다 init.d
. 나는 그것이 한 줄이어야한다고 생각 start_my_app
하지만, 그것은 나를 위해 일하지 않았다.
답변
넣은 파일에서 /etc/init.d/
다음을 사용하여 실행 파일을 설정해야합니다.
chmod +x /etc/init.d/start_my_app
@meetamit 덕분에 이것이 실행되지 않으면 /etc/rc.d/
ln -s /etc/init.d/start_my_app /etc/rc.d/
최신 데비안에서는 스크립트가 LSB를 준수해야하기 때문에 작동하지 않습니다 (최소한 시작, 중지, 다시 시작, 강제 재로드 및 상태).
https : //wiki.debian .org / LSBInitScripts
참고로, 상대 경로 대신 스크립트의 절대 경로를 넣어야합니다. 예기치 않은 문제가 해결 될 수 있습니다.
/var/myscripts/start_my_app
그리고 그 파일 위에 추가하는 것을 잊지 마십시오 :
#!/bin/sh
답변
이것을 위해 crontab을 설정하십시오.
#crontab -e
@reboot /home/user/test.sh
모든 시작 후 테스트 스크립트를 실행합니다.
답변
간단한 접근 방식은 다음에 줄을 추가하는 것입니다 /etc/rc.local
.
/PATH/TO/MY_APP &
또는 특수 사용자로 명령을 실행하려는 경우 :
su - USER_FOOBAR -c /PATH/TO/MY_APP &
(후행 앰퍼샌드는 프로세스를 배경으로하며 rc.local이 계속 실행되도록합니다)
전체 init 스크립트를 원한다면, 데비안 배포판에는 템플릿 파일이 있습니다.
cp /etc/init.d/skeleton /etc/init.d/your_app
그것을 조금 적응 시키십시오.
답변
이것이 제가 Red Hat Linux 시스템 에서하는 방식 입니다.
/etc/init.d
루트 및 실행 파일이 소유 한에 스크립트를 넣습니다 . 스크립트 상단에에 대한 지시문을 제공 할 수 있습니다 chkconfig
. 예를 들어, 다음 스크립트는 Java 애플리케이션을 사용자 oracle로 시작하는 데 사용됩니다.
스크립트의 이름은 /etc/init.d/apex
#!/bin/bash
# chkconfig: 345 99 10
# Description: auto start apex listener
#
case "$1" in
'start')
su - oracle -c "cd /opt/apex ; java -jar apex.war > logs/apex.log 2>logs/apex_error.log &";;
'stop')
echo "put something to shutdown or kill the process here";;
esac
이는 스크립트가 레벨 3, 4 및 5에서 실행되어야하며 시작 / 중지 우선 순위는 99 및 10입니다.
그런 다음 사용자 는 시작시 스크립트를 활성화 또는 비활성화하는 데 사용할 root
수 있습니다 chkconfig
.
chkconfig --list apex
chkconfig --add apex
그리고 당신은 사용할 수 있습니다 service start/stop apex
.
답변
다음을 cron
사용하여 입력하십시오 sudo
.
sudo crontab -e
시작할 때 실행할 명령 (이 경우 스크립트)을 추가하십시오.
@reboot sh /home/user/test.sh
저장:
ESC를 누른 다음 : x를 눌러 저장하고 종료하거나 ESC를 누른 다음 ZZ를 누르십시오 (shift + zz).
테스트 테스트 테스트 :
-
cron없이 테스트 스크립트를 실행하여 실제로 작동하는지 확인하십시오.
-
cron에 명령을 저장했는지 확인하십시오.
sudo crontab -e
-
서버를 재부팅하여 모두 작동하는지 확인하십시오
sudo @reboot
답변
crontab에 줄을 추가하십시오.
파일이 실행 가능한지 확인하십시오.
chmod +x /path_to_you_file/your_file
crontab 파일을 편집하려면
crontab -e
추가해야 할 줄 :
@reboot /path_to_you_file/your_file
간단합니다!
답변
또 다른 옵션은 crontab에 @reboot 명령을 사용하는 것입니다.
모든 버전의 cron이이를 지원하는 것은 아니지만 인스턴스가 Amazon Linux AMI를 기반으로하는 경우 작동합니다.