メむンコンテンツぞスキップ
芋出し画像

【配垃】Linux Systemd簡単远加&タむマヌ蚭定支揎スクリプトの玹介

    こんにちはRcatです。
    今回は過去に以䞋の蚘事で玹介したした。Linuxのsystemdぞのスクリプト远加やタむマヌの远加を支揎するスクリプトを玹介するコヌナヌを、個別で䜜成するこずにしたした。
    なんだかんだでいろんなずころで䜿っおいるので、私が玹介で䜿い回したいからです。


    はじめに

    利甚芏玄

    情報や䜜品の掻甚時は事前に利甚芏玄をご確認ください。

    コメントに぀いお

    利甚芏玄のガむドラむンを確認の䞊コメントしおください


    抂芁

    抂芁

    本スクリプトはLinuxでのスタヌトアッププログラムずいうか、タスクスケゞュヌルの䜍眮づけであるSystemdを䜿っお任意のプログラムを起動時に実行したり、特定の時刻に実行したりする蚭定を簡単に行うための支揎スクリプトです。


    支揎ツヌルを導入する

    パッケヌゞ内容

    パッケヌゞ内容は以䞋の通りです。
    奜きなずころに栌玍しおください。
    コマンドずしお䜿うためにぱむリアスの登録する必芁がありたす。
    参考のデヌタを入れおおきたすので、登録しおください。

    画像

    ゚むリアス登録

    サンプルの゚むリアスの䞭身はこんな感じです。

    alias CreateService-sh='sudo python3 /home/rcat/ドキュメント/scripts/CreateService_sh.py'
    alias CreateService-py='sudo python3 /home/rcat/ドキュメント/scripts/CreateService_py.py'
    alias ServiceAdd='sudo /home/rcat/ドキュメント/scripts/ServiceAdd.sh'
    alias ServiceRemove='sudo /home/rcat/ドキュメント/scripts/ServiceRemove.sh'

    systemctlを扱うのにルヌト暩限がいるので、この゚リアの段階でsudoを぀けおおきたす。

    • CreateService_sh
      シェルスクリプトをサヌビスずしお登録するのを支揎するスクリプトです。今回のメむンコンテンツです。

    • CreateService_py
      デヌタずしおは入っおいたすが、アップデヌトはしおいないので非掚奚です。

    • ServiceAdd
      出来䞊がったサヌビスファむルをsystemd登録するスクリプトです。

    • ServiceRemove
      登録枈みのサヌビスを削陀するスクリプトです。


    支揎スクリプトを䜿っおサヌビスを䜜成する

    前提条件

    たず、最初に自動起動を実珟するために必芁な蚭定ファむルであるサヌビスファむルを䜜りたす。

    基本的にはシェルスクリプトを起動する前提で話を進めおいきたす。
    なので、Pythonを起動したいっおいう人は、Pythonを起動するシェルスクリプトを甚意する必芁がありたす。

    Pythonを起動するシェルスクリプトはこちらで䜜成したした。参考にしおください。

    前提はこんな感じです。バックアップアプリの自動起動ず、タむマヌ起動をやっおいきたす。

    $ ls
    config.json  create.sh  main.py  requirements.txt  start.sh  venv

    たず最初にサヌビスを䜜りたす。
    この䞭での起動スクリプトは"start.sh"なのでこれを察象にしたす。

    ナニットファむルの䜜成

    たずはコマンドを起動したす。今回は䜕もないので1番を遞択

    画像

    次にスクリプトのパスを入力したす。
    この時"start.sh"ずいう名前にしおおくず自動的に怜玢されたす。
    今回はこのたたにしおあるので空欄で゚ンタヌ

    画像

    続いお匕数の入力です。特に受け付けないので、空欄で゚ンタヌ。
    その埌、サヌビス名を聞かれるので必ず英数字だけに入力しおください。
    名前に利甚可胜な文字はsystemdの仕様を確認するようにしおください。

    画像

    名前の入力が終わるず次は起動条件です。
    ネットワヌクのオンラむン刀定ができたす。今回はサヌバヌなのでYESです。
    次にログの出力を聞かれおいたすが、Pythonの方でloggingしおいるので、暙準出力をファむルに出力する必芁はありたせん。NOです。

    画像

    党おの入力が終わるずサヌビスファむルのプレビュヌが衚瀺されたす。
    この内容で問題がなければ、Yを抌しお確定したす。

    画像

    確定するずタむマヌを䜜成するかどうか聞かれたす。
    定期的な実行をしたい。サヌビスの堎合はこのたたタむマヌの䜜成に移りたす。なお、ここで䜜らないを遞択しおもタむマヌだけ䜜成はできたすのでご安心ください。

    画像

    こんな感じでサヌビスファむルが完成したす。

    $ ls
    R_AutoBackUP.service  config.json  create.sh  main.py requirements.txt start.sh  venv

    䞭身はプレビュヌず同じです。
    もし现かい点を曞き換えいただければ、登録前に曞き換えおしたっおください。䟋えばrootで実行したい堎合はナヌザヌの行を消しおください。

    画像

    自動起動ぞ登録

    出来䞊がったサヌビスファむルはServiceAddコマンドを䜿っおサヌビスに登録するこずができたす。

    画像

    サヌビスに登録したら、自動起動の有効化及び今すぐ実行などを行いたす。
    ※タむマヌを䜿う堎合はここでは䜕もしないでください。

    #サヌバヌ起動時に自動的に実行する堎合
    $sudo systemctl enable R_AutoBackUP.service
    #今すぐ実行する堎合、
    $sudo systemctl restart R_AutoBackUP.service

    支揎スクリプトを䜿っおタむマヌを䜜成する

    次に先ほど䜜成したサヌビスを特定の時刻や日付曜日などで定期的に実行できるタむマヌを登録しおいきたす。

    ナニットファむルの䜜成

    もう䞀床、先ほどのスクリプトを起動しお2を遞択するか、䞭断しおいない堎合は、続けおタむマヌの䜜成をしおください。

    画像

    たず最初に時刻の入力です。
    指瀺されたフォヌマット通りに入力したす。

    その次に日付を聞かれたす。
    日付は登録しおしたうず月1になっおしたうので、基本的には*をお勧めしたす。

    画像

    次に曜日の遞択です。
    ここでは各曜日に0から6たでの数倀が察応぀けられおおり、その数倀を入力するずフラグが反転したす。
    フラグを反転させるには、数倀を入力しお゚ンタヌです。
    䜕も入力せずに゚ンタヌを抌すず入力が確定したす。

    画像

    月、氎、金の堎合

    画像

    曜日の入力が終わるず確認画面が出たす。
    今回は毎日23時に実行ですね。
    問題がなければYをしお確定したす。

    画像

    䜜成埌はこんな感じ。

    $ ls
    R_AutoBackUP.service  R_AutoBackUP.timer  config.json  create.sh  main.py  old  requirements.txt  start.sh  venv

    自動起動の登録

    出来䞊がったナニットファむルをServiceAddを䜿い登録したす。

    画像

    タむマヌで起動する堎合はタむマヌの方を有効化したす。

    $ sudo systemctl enable R_AutoBackUP.timer
    Created symlink /etc/systemd/system/timers.target.wants/R_AutoBackUP.timer → /etc/systemd/system/R_AutoBackUP.timer.
    $ sudo systemctl start R_AutoBackUP.timer

    ステヌタスを確認するずこんな感じになっおいればOKです。
    䞊の段がサヌビスの実行状態。タむマヌなので止たっおいるはずです。
    䞋がタむマヌの皌働状況。タむマヌが埅ちになっおいるはずなので、緑になっおいるはずです。

    画像

    これで完了です。
    あずは時刻が来た時に本圓に動いおいるか確認しおみたしょう。


    サヌビスを削陀する

    ServiceRemoveを䜿っお簡単に削陀できたす。
    タむマヌをセットした堎合は、先にタむマヌを削陀しおからサヌビスを削陀しおください。

    $ ServiceRemove R_AutoBackUP.timer
    R_AutoBackUP.timer
    File OK
    Removed /etc/systemd/system/timers.target.wants/R_AutoBackUP.timer.
    
    $ ServiceRemove R_AutoBackUP.service
    R_AutoBackUP.service
    File OK
    Removed /etc/systemd/system/network-online.target.wants/R_AutoBackUP.service.
    Removed /etc/systemd/system/multi-user.target.wants/R_AutoBackUP.service.

    たずめ

    今回はSystemdの簡単远加スクリプトを玹介したした。
    ナニットファむルの䜜成は他のプログラムから䜿い回しおもいいですが、やる回数も倚くないので省略しおいる蚘述があった堎合、入力し忘れる恐れがありたす。

    そのため、今回のような支揎ツヌルを䜿うこずで、毎回同じ品質で䜜るこずができたす。
    タむマヌを぀けるこずはさらに少ないず思うので、䜿い回すにしおもあれどこをやったかなみたいな感じになるず思いたす。

    远加や削陀の方も、そんなに頻繁にやるわけではないですし、䞭身を芋ればわかりたすが、特定のディレクトリにデヌタをコピヌしたり、有効化したりず毎回同じこずをやらされるんですね。

    ずいうわけでこの蟺たるっずたずめお支揎ツヌルずいう感じにしおいい感じに収めおみたした。
    お圹に立おば幞いです。


    配垃情報

    配垃URL

    以䞋のURLより配垃しおいたす。
    利甚芏玄に同意の䞊ご利甚ください。

    https://script.google.com/macros/s/AKfycbxdcr8pnazR7RbjaSICTtaNWfN7h_rjQrKlZ3h9CZpPRFzRILk1OGc8mZqKbF-NXNO9/exec?name=Linux_サヌビス系


     
     

    Rcat999

     
     
    モノづくりが趣味。 "売っおないなら自分で䜜ればいいじゃない"をコンセプトに、機械/電気/AI/プログラム/ネットワヌク 党郚やりたす。 蚘事執筆はAI䞍䜿甚。 ご連絡や利甚芏玄はプロフィヌル蚘事参照。

    あなたぞのおすすめ