Linux に起動方法を追加する (サービス/スクリプト)

Linux に起動方法を追加する (サービス/スクリプト)

システムの起動時に読み込む必要がある設定ファイル

/etc/profile、/root/.bash_profile
/etc/bashrc、/root/.bashrc
/etc/profile.d/*.sh、/etc/profile.d/lang.sh
/etc/sysconfig/i18n、/etc/rc.local (/etc/rc.d/rc.local)

1. ブートスタートアップファイルを変更する: /etc/rc.local (または /etc/rc.d/rc.local)

# 1. rc.localファイルを編集する [root@localhost ~]# vi /etc/rc.local

# 2. rc.local ファイルを変更し、exit 0 の前に次のコマンドを追加します。保存して終了します。
/etc/init.d/mysqld を起動します #mysql を起動します/etc/init.d/nginx を起動します #nginx を起動します supervisord -c /etc/supervisor/supervisord.conf # supervisord を起動します/bin/bash /server/scripts/test.sh >/dev/null 2>/dev/null

# 3. 最後に、rc.local ファイルの実行権限を変更します [root@localhost ~]# chmod +x /etc/rc.local
[root@localhost ~]# chmod 755 /etc/rc.local

2. 自分でシェルスクリプトを書く

記述したスクリプト (.sh ファイル) を /etc/profile.d/ ディレクトリに配置します。このディレクトリ内のすべてのシェル スクリプトは、システムの起動後に自動的に実行されます。

3. chkconfigコマンドで設定する

# 1. (スクリプト) 起動ファイルを /etc/init.d/ または /etc/rc.d/init.d/ ディレクトリに移動します。 (前者は後者へのソフトリンクです)
mv /www/wwwroot/test.sh /etc/rc.d/init.d

# 2. 起動ファイルの前に次の 3 行のコードを必ず追加してください。そうしないと、chkconfig がサポートされていないというメッセージが表示されます。
#!/bin/sh はシステムにシェルを使用するように指示するため、すべてのシェル スクリプトは次のようになります。#chkconfig: 35 20 80 はそれぞれ実行レベル、起動優先度、シャットダウン優先度を表します。このコード行は #description: http server である必要があります。好きなように使用できます。 ! !このコード行は /bin/echo $(/bin/date +%F_%T) >> /tmp/test.log である必要があります。

# 3. スクリプトに実行権限を追加する chmod +x /etc/rc.d/init.d/test.sh

# 4. 自動スタートアップ プロジェクトにスクリプトを追加します。 chkconfig に追加し、起動時に自動的に開始します。
[root@localhost ~]# cd /etc/rc.d/init.d
[root@localhost ~]# chkconfig --add test.sh
[root@localhost ~]# chkconfig test.sh オン

# 5. ブートをオフにする [root@localhost ~]# chkconfig test.sh off

# 6. chkconfig管理からtest.shを削除する
[root@localhost ~]# chkconfig --del test.sh

# 7. chkconfig 管理を表示する [root@localhost ~]# chkconfig --list test.sh

4. サービスファイルをカスタマイズし、システムサービスに追加し、Systemctl を通じて管理する

1. サービスファイルを書き込む: nginx.service、redis.service、supervisord.service など

[Unit]: サービスの説明 説明: サービスの説明 After: サービスのカテゴリの説明 [Service] サービス実行パラメータの設定 Type=forking はバックグラウンド実行の形式です ExecStart はサービスの特定の実行コマンドです ExecReload はサービスの再起動コマンドです ExecStop はサービスの停止コマンドです PrivateTmp=True はサービスに独立した一時領域を割り当てることを意味します 注: すべての開始、再起動、および停止コマンドでは絶対パスを使用する必要があります [Install] サービスのインストールに関連する設定。マルチユーザーに設定できます WantedBy=multi-user.target 

2. ファイルは 754 の権限でディレクトリに保存されます。ディレクトリ パス: /usr/lib/systemd/system。たとえば、上記の supervisord.service ファイルはこのディレクトリの下に配置されます。

[root@localhost ~]# cat /usr/lib/systemd/system/nginx.service
[root@localhost ~]# cat /usr/lib/systemd/system/supervisord.service

3. 起動時にシステムが自動的に起動するように設定します(任意のディレクトリで実行します)。起動コマンドの実行時にエラーが発生した場合は、以下を実行してください: systemctl daemon-reload

自動起動を設定する [root@localhost ~]# systemctl enable nginx.service    
[root@localhost ~]# systemctl enable supervisord

自動起動を停止する [root@localhost ~]# systemctl enable nginx.service
[root@localhost ~]# systemctl は supervisord を無効にする

起動時に起動されているか確認する [root@localhost ~]# systemctl is-enabled nginx
[root@localhost ~]# systemctl is-enabled supervisord

4. その他のコマンド

nginx サービスを開始します [root@localhost ~]# systemctl start nginx.service

nginx サービスを停止します [root@localhost ~]# systemctl start nginx.service

nginx サービスを再起動します [root@localhost ~]# systemctl restart nginx.service

nginx サービスの現在のステータスを表示します [root@localhost ~]# systemctl status nginx.service

開始されているすべてのサービスを表示します [root@localhost ~]# systemctl list-units --type=service

5. サービスファイルの例:

# supervisord.service プロセス管理サービスファイル [Unit]
説明=プロセス監視および制御デーモン # 内容を自分で定義します: 説明=スーパーバイザデーモン
後=rc-local.service nss-user-lookup.target

[サービス]
タイプ=フォーク
ExecStart=/usr/bin/supervisord -c /etc/supervisor/supervisord.conf
ExecStop= /usr/bin/supervisorctl シャットダウン 
ExecReload=/usr/bin/supervisorctl リロード
再起動=失敗時
再起動秒数=42秒
キルモード=プロセス 

[インストール]
WantedBy=マルチユーザー.ターゲット

# nginx.service サービスファイル [Unit]
説明=nginx - 高性能ウェブサーバー
後=network.target remote-fs.target nss-lookup.target

[サービス]
タイプ=フォーク
実行開始=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/usr/local/nginx/sbin/nginx -s 再ロード
ExecStop=/usr/local/nginx/sbin/nginx -s stop

[インストール]
WantedBy=マルチユーザー.ターゲット

# redis.service サービスファイル [Unit]
説明=Redis
後=network.target remote-fs.target nss-lookup.target

[サービス]
タイプ=フォーク
ExecStart=/usr/local/bin/redis-server /etc/redis.conf
ExecStop=kill -INT `cat /tmp/redis.pid`
ユーザー=www
グループ=www

[インストール]
WantedBy=マルチユーザー.ターゲット

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Linux サービスを自動的に起動する 3 つの方法
  • Linux で起動時に Oracle を自動的に起動するように設定する方法
  • LinuxでのOracle起動スクリプトとその起動
  • Oracle サービスの起動および停止スクリプトと Linux でのブートの自動起動
  • Linux で Redis の起動を設定する方法
  • Linux 起動時にノードマネージャを起動する手順
  • Linux での Redis のパスワード設定と自動起動
  • Linuxのブートプロセスの詳細な説明
  • Linux 起動時に Redis サービスを自動的に開始する方法
  • Linux システムを起動時に自動的にスクリプトを実行するように設定する方法の例

<<:  vue $setは配列コレクションオブジェクトへの値の割り当てを実装します

>>:  Oracle の開閉の 4 つのモード

推薦する

Centos7.X Linux システムに tomcat8 をインストールするためのグラフィック チュートリアル

1. Tomcatのインストールパスを作成する mkdir /usr/local/tomcat 2....

MySQL の自己結合重複排除に関する注意事項

機能シナリオを簡単に説明しましょう。データ行フィールドは次のとおりです。名前開始日時タイプこの表では...

DeepinでPyenvをインストールする手順

序文これまでは、/bin/ ディレクトリのソフトリンクを変更して Python のバージョンを切り替...

ウェブサイトのビジュアルデザイン(画像とテキスト)における情報伝達の役割と方法

現代の Web ビジュアル デザインは、初期の情報の積み重ねから、その後のグラフィックスと抽象化、そ...

ボタンをクリックしてテキストを入力ボックスに変換し、保存をクリックしてテキスト実装コードに変換します。

ボタンをクリックしてテキストを入力ボックスに変換し、保存をクリックしてテキスト実装コードに変換します...

Dockerでパラメータ変数を外部から指定する方法

この記事は主にDockerでパラメータ変数を外部から指定する方法を紹介します。この記事のサンプルコー...

MySQL ストアド プロシージャ関連の権限変更の問題

MySQL データベースを使用すると、他のユーザーが定義したストアド プロシージャを他のユーザーが変...

Linux の traceroute コマンドの使用方法の詳細な説明

Traceroute を使用すると、情報がコンピュータからインターネットの反対側のホストまでたどるパ...

JavaScript キャンバスはマウスの動きに合わせてボールを動かすことを実装します

この記事の例では、マウスに従ってボールを動かすjsの具体的なコードを参考までに共有しています。具体的...

Dockerは起動されていないコンテナの設定情報を変更します

私が初めてdockerを使用したときは、dockerfileやdocker-composeを使用して...

MySQLフィールド定義でnullを使用しない理由の分析

NULL が頻繁に使用されるのはなぜですか? (1)Javaのnull Java の NullPoi...

LinuxにNginxをインストールする詳細な手順

1. Nginxのインストール手順1.1 公式サイトの紹介http://nginx.org/en/d...

CentOS仮想マシンの時刻を変更する方法

上はシステム時間、下はハードウェア時間です。ここでは変更を加えているので、同じくらいの速さになってい...

2017 最新バージョンの Windows インストール MySQL チュートリアル

1. まず、MySQL の公式サイトから最新バージョンの MySQL をダウンロードします。リンクを...

MySQL への接続時に発生する 1449 および 1045 例外の解決方法

MySQL への接続時に発生する 1449 および 1045 例外の解決方法 mysql 1449:...