서버가 실행될 때마다 명령을 실행하는 방법

서버가 실행될 때마다 명령을 실행하는 방법

우분투 서버 16.04를 사용하고 있습니다.

서버가 시작될 때마다 특정 명령을 실행하고 싶습니다. 이 명령을 실행해야 한다는 의미입니다.서버가 실행 중일 때(계속 작업).

이 명령은 PHP 프레임워크에 연결하고 웹 애플리케이션을 시작합니다. 일반적 /var/www/html/app으로 응용 프로그램이 있는 폴더로 이동하여 이 명령을 실행할 수 있습니다.php artisan serve --host ipadress

답변1

cron이 목적으로 항목을 생성할 수 있습니다 . @reboot시작 시 한 번 실행됩니다.

다음을 포함하는 파일을 넣을 수 있습니다 /etc/cron.d.

 @reboot    root    cd /var/www/html/app && /usr/bin/php artisan serve --host ipaddress

명령에 루트 권한이 필요하지 않은 경우 루트를 다른 사용자로 변경해야 합니다.

또는 crontab -e -u username 명령을 실행해야 하는 사용자의 crontab 편집을 실행하고 다음 줄을 삽입할 수 있습니다.

 @reboot    cd /var/www/html/app && /usr/bin/php artisan serve --host ipaddress

왜냐하면 명령은 &&성공할 경우에만 실행되기 때문입니다.cd

고쳐 쓰다: 서버 프로세스라면 pylover 쇼와 같은 init 시스템을 사용하는 것이 좋습니다. 나는 우분투에서 systemd를 선호합니다. 방금 변경했기 때문에 다른 사람들(신생 기업)이 ​​아무것도 설치하거나 구성하지 않고도 이를 사용할 수 있는지 잘 모르겠습니다. init 시스템을 사용하면 서비스를 시작 및 중지하고 해당 상태를 쿼리할 수 있습니다.

답변2

일부 프로그램은 지속적인 사용자 입력 하에서 실행되고 처음으로 터미널 연결이 끊어지도록 설계되지 않았습니다. 예를 들어 웹 서버는 사용자 입력이 아닌 웹 요청에 응답합니다. 메일 서버는 이러한 애플리케이션의 또 다른 예입니다. 이러한 유형의 프로그램을 데몬 프로세스라고 합니다. 데몬이라는 단어는 그리스 신화에서 유래되었으며 눈에 보이지 않게 유용한 작업을 수행하는 선하지도 악하지도 않은 존재를 나타냅니다. 그렇기 때문에 BSD 마스코트는 운동화와 갈퀴를 착용한 명랑해 보이는 데몬입니다.

upstart를 사용해 봅시다:

/etc/init/my-http-server.conf라는 파일을 만듭니다.

description "my-http-server"

start on (filesystem)
stop on runlevel [016]

respawn
#setuid my_user_id
#setgid my_group_id
#chdir /opt/my/env

exec <your command>

pre-start script
  mkdir -p /var/run/my/
  chown -R my:www-data /var/run/my  
end script

#post-start script
#  sleep 6
#  chmod 776 /var/run/my/.s.my
#end script

자세한 내용은 다음을 참조하세요.신생 문서.

start그런 다음 // stop명령 을 사용하여 restart데몬을 제어합니다.

$ start my-http-server
$ stop my-http-server
$ restart my-http-server

우분투 16.04에서 데몬을 생성하는 데 사용 가능한 옵션의 전체 목록은 다음을 참조하세요.여기

편집 1: 몇 가지 추가 정보가 있습니다. 우분투 16.04에는 다음이 포함되어 있습니다.체계.

따라서 가장 좋은 방법은 systemd 데몬을 만드는 것입니다. rc.d, init.d 및 upstart는 곧 더 이상 사용되지 않을 것이기 때문입니다!

관련 정보