Linux システムを起動時に自動的にスクリプトを実行するように設定する方法の例

Linux システムを起動時に自動的にスクリプトを実行するように設定する方法の例

序文

みなさんこんにちは。私は梁旭です。

職場では、システムの起動後にスクリプトやサービスを自動的に開始する必要があることがよくあります。 Windows ではスタートアップを設定する方法が多数ありますが、Linux システムではどのように設定すればよいのでしょうか?

Linux でもスタートアップの設定は可能ですが、いくつかのコマンドを入力する必要があるかもしれません (UI インターフェイスでの設定方法もあるかもしれませんが、私はそれに慣れていないので、コマンドで操作する方が好きです)。以下では、起動設定のシンプルだが実行可能な 3 つの方法を紹介します。

方法1: /etc/rc.d/rc.local ファイルを変更する

/etc/rc.d/rc.local ファイルは、Linux システムのすべてのサービスが開始された後に実行されます。したがって、起動後に独自のスクリプトを実行する場合は、このファイルに独自のスクリプト パスを追加できます。

ただし、まずこのファイルを実行する権限があることを確認する必要があります。

$ chmod +x /etc/rc.d/rc.local

デモンストレーションの目的で、実行するとホーム ディレクトリに特定の情報を含むファイルを書き込むスクリプトを作成しました。

$ vim 自動実行スクリプト.sh

#!/bin/bash
日付 >> /home/alvin/output.txt
ホスト名 >> /home/alvin/output.txt

保存して終了したら、実行権限を付与します。

$ chmod +x auto_run_script.sh

次に、/etc/rc.d/rc.local ファイルの最後の行にスクリプトを追加します。

$ vim /etc/rc.d/rc.local

/home/alvin/auto_run_script.sh

次に、効果を試してみましょう。システムを再起動するだけです:

$ sudo 再起動

再起動後、ホームディレクトリにスクリプトの実行結果が表示されます。

方法2: crontabを使用する

ご存知のとおり、crontab は Linux でスケジュールされたタスクです。設定した時間になると、特定のスクリプトの実行を自動的にトリガーできます。

スケジュールされたタスクの時間を自分で設定し、対応するスクリプトを記述することができます。ただし、@reboot と呼ばれる特別なタスクがあります。その文字通りの意味から、このタスクはシステムの再起動後にスクリプトを自動的に実行するためのものであることがわかります。

それで、どのようなスクリプトが実行されるのでしょうか?このスクリプトをどのように設定するのでしょうか? crontab -e で設定できます。

$ crontab -e

@reboot /home/alvin/auto_run_script.sh

その後、再起動するだけです。ランニング効果も上記と同様です。

方法3: systemdサービスを使用する

上記の 2 つの方法は、どの Linux システムでも使用できます。ただし、この方法は systemd システムにのみ適用できます。 systemd システムかどうかを判別するにはどうすればよいでしょうか?とても簡単です。ps aux コマンドを実行して、pid 1 のプロセスが systemd であるかどうかを確認するだけです。

これを実現するには、systemd 起動サービスを作成し、それを /etc/systemd/system/ ディレクトリに配置する必要があります。

作成した systemd 起動サービスは次のとおりです。サフィックスは.shではなく.serviceであることに注意してください。

$ vim auto_run_script.service

[ユニット]
説明=起動時にカスタムスクリプトを実行する
後=default.target

[サービス]
ExecStart=/home/alvin/auto_run_script.sh

[インストール]
WantedBy=デフォルト.ターゲット

サービスの内容から、最終的にスクリプト /home/alvin/auto_run_script.sh を呼び出すことがわかります。

次に、このスクリプトを /etc/systemd/systerm/ ディレクトリに配置し、次の 2 つのコマンドを実行して systemd 構成ファイルを更新し、サービスを開始します。

$ systemctlデーモンリロード
$ systemctl auto_run_script.service を有効にする

すべての準備が整ったら、システムを再起動できます。

$ 再起動

要約する

Linux システムの起動時にスクリプトを自動的に実行するための設定に関するこの記事はこれで終わりです。Linux の起動スクリプトの詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

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

<<:  Vueはページング機能を実装する

>>:  MySQLのunion allとunionの違いを簡単に理解する

推薦する

フロートとBFCをクリアするCSSメソッド

イギリスBFC: ブロック書式設定コンテキストBFCレイアウトルール内箱は縦方向に次々に配置されます...

Bツリー挿入プロセスの概要

前回の記事 https://www.jb51.net/article/154153.htm では、B...

実際のプロジェクトでElementUIを使用する手順の詳細な説明

目次1. テーブル自動ソート2. ページング機能3.el-checkbox-group 複数選択ボッ...

Vueプロジェクトのフロントエンドを最適化およびパッケージ化するための必須のボーナスアイテム

目次序文1. ルーティングの遅延読み込み1. ルートの遅延読み込みが必要なのはなぜですか? 2. ル...

VMware Workstation 12 Pro Linux インストール チュートリアル

この記事は、VMware Workstation 12 ProのインストールLinuxチュートリアル...

MySQL データベースの Binlog 使用法の概要 (必読)

MySQL データベースにとって binlog バイナリ ログがどれほど重要であるかについては詳し...

MySQL NULLがピットを引き起こした

比較演算子でNULLを使用する mysql> 1>NULLを選択します。 +------...

Vue双方向バインディングの詳細な説明

目次1. 双方向バインディング2. 他のタグを選択した場合にも同じ結果になりますか? 答えはもちろん...

MysqlクエリJSON結果に関連する関数の概要

JSON 形式のフィールドは、MySQL 5.7 で追加された新しい属性ですが、基本的には文字列とし...

MACOS で MySQL ルートパスワードを忘れた場合の解決策

MySQL は、スウェーデンの会社 MySQL AB によって開発されたリレーショナル データベース...

vue+antv でレーダーチャートを実装するためのサンプルコード

1. 依存関係をダウンロードするnpm インストール @antv/データセットnpm インストール ...

MySQL で乱数を生成し、文字列を連結する方法の例

この記事では、MySQL が乱数を生成し、文字列を連結する方法について例を使用して説明します。ご参考...

geoip を使用して nginx で地域を制限する方法

このブログは仕事のメモです環境: nginx バージョン: nginx/1.14.0 Centos ...

Vueのコンポーネントのprops属性について詳しく説明します

目次質問1: 小道具は具体的にどのように使用されますか?原理は何ですか?下を見る質問 2: 年齢に ...

HarborをベースにしたDocker専用倉庫の構築方法

目次1. ハーバーの紹介1. ハーバーが民間倉庫を建設3. 港湾の維持管理4. Harborユーザー...