Ubuntu 18.04起動自動設定

4496 ワード

Ubuntu 16.10はinitd管理システムを使用しなくなり、システムctlコマンドでサービスとchkconfigを置き換える機能を含むシステムを変更しました.例えば、以前はmysqlサービス用sudo service mysql startを起動していたが、現在はsudo systemctl start mysqld.serviceを使用している.Systemdはデフォルトで/etc/systemd/systemd/systemmのプロファイルを読み込みます.このディレクトリのファイルは/lib/systemd/systemm/のファイルにリンクされます.
実行コマンドls /lib/systemd/systemには、多くの起動スクリプトが表示されます.このうち、必要なrc.local.serviceがあります.スクリプトの内容を開くと、次のようになります.
#  SPDX-License-Identifier: LGPL-2.1+
#
#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU Lesser General Public License as published by
#  the Free Software Foundation; either version 2.1 of the License, or
#  (at your option) any later version.

# This unit gets pulled automatically into multi-user.target by
# systemd-rc-local-generator if /etc/rc.local is executable.
[Unit]
Description=/etc/rc.local Compatibility
Documentation=man:systemd-rc-local-generator(8)
ConditionFileIsExecutable=/etc/rc.local
After=network.target

[Service]
Type=forking
ExecStart=/etc/rc.local start
TimeoutSec=0
RemainAfterExit=yes
GuessMainPID=no

一般的な起動ファイルには3つのコンポーネントが必要です
[Unit]セグメント:起動順序と依存関係[Services]セグメント:起動動作、起動方法、起動タイプ[Install]セグメント:このプロファイルのインストール方法、つまり起動方法を定義します
上に[Install]段が少なくなったので、下のInstall段を追加します.
[Install]  
WantedBy=multi-user.target  
Alias=rc-local.service

Ubuntu-18.04のデフォルトは/etc/rcではありません.localこのファイルは、自分で作成する必要があります
sudo touch /etc/rc.local

システムdはデフォルトで/etc/systemd/systemd/systemmのプロファイルを読み込むので、/etc/systemd/systemmディレクトリでソフトリンクを作成する必要があります.
sudo ln -s /lib/systemd/system/rc.local.service /etc/systemd/system/

スクリプトを起動して/etc/rcに書き込む必要があります.local、まずテストスクリプトを書いてテストします
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

sudo echo "     ,           " > /usr/local/text.log
exit 0

rcをあげるlocal実行可能権限
sudo chmod +x /etc/rc.local

サービスの開始とステータスの確認
sudo systemctl enable rc-local
sudo systemctl start rc-local.service
sudo systemctl status rc-local.service

再起動後にtextがあるかどうかを確認します.log生成、および書き込み内容がthis just a testであるか