0. 設置要件
*1「ポリシーを変更すれば···」とか言う人は分かっている人なので自由にやってください。
項目 内容 備考 OS Rocky Linux release 9.0 (Blue Onyx) 本稿記述時の最新版。Rocky は CentOS の後継。 SELinux Enforcing SELinux は有効のままとする。 シェルファイル名 autoexec.sh - シェルファイル設置ディレクトリ /usr/bin/ SELinux が有効の場合は設置ディレクトリが限られる。*1 サービス名 autoexec - ユニットファイル名 autoexec.service ファイル名を サービス名.service にする必要がある。 ユニットファイル設置ディレクトリ /etc/systemd/system/ ユーザ用はここに置く。
1. シェルスクリプトの作成
$ su
# vim /usr/bin/autoexec.sh
# chown root:root /usr/bin/autoexec.shここでは Shared memory に空のファイルを作成している。
#!/bin/bash touch /dev/shm/autoexec.txt
RAM ディスクのようなもので、再起動時は自動的にクリアされる。
# chmod 750 /usr/bin/autoexec.sh
# chcon -u system_u -r object_r -t bin_t /usr/bin/autoexec.sh
# ls -lZ /usr/bin/autoexec.sh
-rwxr-x---. 1 root root system_u:object_r:bin_t:s0 214 8月 8 18:42 /usr/bin/autoexec.sh
2. ユニットファイルの作成
# vim /etc/systemd/system/autoexec.service
*2ExecStart= を上記で作成したシェルスクリプトのパスと合わせる。
[Unit] Description=Example of automatic shell script execution by user. [Service] Type=forking ExecStart=/usr/bin/autoexec.sh [Install] WantedBy=default.target
3. 動作確認
# systemctl start autoexec.service
# ls -l /dev/shm/autoexec.txt
(何も表示されなければ OK)
-rw-r--r--. 1 root root 0 8月 8 20:14 /dev/shm/autoexec.txt
4. ユニットファイルの登録
# systemctl enable autoexec.service
# systemctl daemon-reload
Created symlink /etc/systemd/system/default.target.wants/autoexec.service → /etc/systemd/system/autoexec.service.
# systemctl status autoexec.service
○ autoexec.service - Example of automatic shell script execution by user. Loaded: loaded (/etc/systemd/system/autoexec.service; enabled; vendor preset: disabled) Active: inactive (dead) since Fri 2022-08-08 20:14:01 JST; 54s ago Process: 4252 ExecStart=/usr/bin/autoexec.sh (code=exited, status=0/SUCCESS) CPU: 2ms 8月 8 20:14:01 localhost.localdomain systemd[1]: Starting Example of automatic shell script execution by user.... 8月 8 20:14:01 localhost.localdomain systemd[1]: autoexec.service: Deactivated successfully. 8月 8 20:14:01 localhost.localdomain systemd[1]: Started Example of automatic shell script execution by user..
5. 再起動
# shutdown -r now
Rocky Linux を再起動し、上記「3. 動作確認」と同様のファイルが作成されていれば完了とする。
(当然、ファイルの作成日時は異なる)