ubuntu-16.10以降、ubuntuはinitd管理システムを使用しなくなり、代わりにsystemdを使用します。
systemdの使用法を調べたところ、serviceとchkconfigをsystemctlコマンドに置き換えるなど、変更が少し大きいことがわかりました。
たとえば、次の前にmysqlサービスを開始するには:
須藤は管理者です。現在のユーザーが管理者の場合は無視してください。
sudo service mysql start
今すぐ使用:
sudo systemctl start mysqld.service
実際、この変更はそれほど大きくはありません。主な理由は、起動が以前よりも複雑になっていることです。 systemdは、デフォルトで/ etc / systemd / systemの下の構成ファイルを読み取り、このディレクトリーの下のファイルは、/ lib / systemd / system /の下のファイルにリンクされます。
ls / lib / systemd / systemを実行すると、必要なrc.local.serviceを含む多くの起動スクリプトがあることがわかります。
スクリプトの内容を開きます。
# 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.1of 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
ConditionFileIsExecutable=/etc/rc.local
After=network.target
[ Service]
Type=forking
ExecStart=/etc/rc.local start
TimeoutSec=0
RemainAfterExit=yes
通常、通常の起動ファイルは主に3つの部分に分かれています。
[ ユニット]セクション:起動シーケンスと依存関係
[ サービス]セクション:開始動作、開始方法、開始タイプ
[ [インストール]セクション:この構成ファイルのインストール方法、つまり起動方法を定義します
/etc/rc.localの起動シーケンスがネットワークの背後にあることがわかりますが、明らかにインストールセクションがなく、起動方法の定義がないため、この構成は明らかに無効です。したがって、[インストール]セクションを彼に追加する必要があります。
[ Install]
WantedBy=multi-user.target
Alias=rc-local.service
ここで、ubuntu-18.04にはデフォルトで/etc/rc.localファイルがないため、自分で作成する必要があることに注意してください。
sudo vi /etc/systemd/system/rc-local.service
[ Unit]
Description=/etc/rc.local Compatibility
ConditionPathExists=/etc/rc.local
[ Service]
Type=forking
ExecStart=/etc/rc.local start
TimeoutSec=0
StandardOutput=tty
RemainAfterExit=yes
SysVStartPriority=99[Install]
WantedBy=multi-user.target
sudo vi /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 defaultthis script does nothing.
echo java -jar /home/intel/XXX.jar --spring.config.location=/home/intel/config/application.properties >/home/intel/XXXX.log &>/usr/local/test.log
exit 0
sudo chmod +x /etc/rc.local
sudo systemctl enable rc-loca
sudo systemctl start rc-local.service
sudo systemctl status rc-local.service
cat /usr/local/test.log