サーバーが実行されるたびにコマンドを実行する方法

サーバーが実行されるたびにコマンドを実行する方法

Ubuntu Server 16.04を使用しています。

サーバーが起動するたびに特定のコマンドを実行したいと思います。このコマンドを実行する必要があることを意味します。サーバーが稼働しているとき(継続操作).

このコマンドはPHPフレームワークに接続し、Webアプリケーションを起動します。通常/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

コマンドにroot権限が必要ない場合は、rootを他のユーザーに変更する必要があります。

または、crontab -e -u username コマンドを実行する必要があるユーザーのcrontab編集を実行し、次の行を挿入することもできます。

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

なぜなら、コマンドは&&成功した場合にのみ実行されるからです。cd

修正する:サーバープロセスの場合は、pyloverショーなどのinitシステムを使用することをお勧めします。私はUbuntuでsystemdを好みます。変更したばかりのため、他の人(スタートアップ)が何もインストールしたり構成したりせずに使用できるかどうかはわかりません。 initシステムを使用すると、サービスを開始および停止し、その状態を照会できます。

答え2

一部のプログラムは、継続的なユーザー入力の下で実行され、初めて端末接続が切断されるように設計されていません。たとえば、Webサーバーはユーザー入力ではなくWeb要求に応答します。メールサーバーは、これらのアプリケーションの別の例です。このタイプのプログラムはデーモンプロセスと呼ばれます。デーモンという言葉はギリシャ神話に由来し、目に見えない有用な仕事をする善も悪もない存在を表しています。そのため、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

Ubuntu 16.04でデーモンを生成するために使用できるオプションの完全なリストについては、以下を参照してください。ここ

編集1: いくつかの追加情報があります。 Ubuntu 16.04には以下が含まれています。システム

したがって、最良の方法はsystemdデーモンを作成することです。 rc.d、init.d、upstartはまもなく廃止されるからです!

関連情報