私は実際にMariaDB(MySQLのドロップイン置換)を使用しています。
Systemd mysql.serviceファイルに変更を加えようとしています。
Sudo systemctlを実行するとそれがリストされ、ロードされている/アクティブである/実行中であることが示されているので、それが存在することがわかります。
問題は、編集するファイルが見つからないことです。私が見つけたさまざまな記事で読んだことから、ドキュメントは次の場所にあるはずです
/etc/systemd/system/multi-user.target.wants/mysql.service
しかし、そうではありません。/etc/systemdレベルで他のディレクトリを参照しましたが、役に立ちませんでした。何か案は?
静的ファイルで定義されたユニットには、systemctl status
、そのコマンドを発行して出力された情報を使用して、その場所を確認できます。
例えば:
# systemctl status sshd
● sshd.service - OpenSSH Daemon
Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: disabled)
Active: active (running) since Mon 2016-10-31 17:01:01 UTC; 1 weeks 0 days ago
Main PID: 283 (sshd)
Tasks: 1 (limit: 4915)
CGroup: /system.slice/sshd.service
└─290 /usr/bin/sshd -D
ここではtabコマンドが役立つことに注意してください。
したがって、私のシステムでは、systemdサービスは/usr/lib/systemd/
。その場所にフォルダが存在する可能性があることに注意してください。
別の方法は、その特定の場所でfind
コマンドを使用してサービスを見つけることです。
# find /usr/lib/systemd/ | grep -i mysql
それが役に立てば幸いです;)
Systemd initスクリプトのデフォルトの場所は次のとおりです。
/lib/systemd/system
しかし、それらを変更するための推奨される方法は、次の場所にカスタムスクリプトを作成することです。
/etc/systemd/system
後者のフォルダー内のスクリプトは、前の場所のスクリプトをオーバーライドします。
あなたの特定のケースでは、おそらくMySQLにはsystemdサービスファイルがなく、/etc/init.d/mysql
にSystemV initスクリプトしかないためです。それを制御するには、systemctl
またはservice
を使用する必要があります。 /etc/init.d/mysql stop
を実行すると、systemdがクラッシュしたと判断し、再起動します。
新しいUbuntuでもこれができるかどうかはわかりませんが、古いものは間違いなくそうです。
私はubuntu 16.04を使用しています! /etc/security/limit.confおよび/etc/mysql/my.cnfを変更した後、次を実行しますSudo systemctl edit mysql.service
次の行を追加する[Service]
LimitNOFILE=infinity
Maria.dbサイトの systemd の公式ドキュメントによると、maria.dbサービスの構成ファイルは次の場所に保存されています。
/usr/lib/systemd/system/mariadb.service
systemdクイック情報:
systemdは、MariaDBが10.1.8以降のリリースで使用するinitの代替品です。このバージョンより前の配布パッケージは別の構成を使用する可能性があるため、必要に応じてドキュメントを参照してください。
...そして設定ファイルの場合:
サービス定義は/usr/lib/systemd/system/mariadb.serviceにインストールされます。サービス名はmariadb.serviceです。ただし、便宜上、mysql.serviceおよびmysqld.serviceのエイリアスが含まれています。
インストールでmaria.dbサービスを開始するためにカスタマイズされた構成ファイルを使用している場合、スクリプトは次の場所にあります。
/etc/systemd/system/mariadb.service.d/XXXX.conf
XXXXは任意のファイル名にできます!
これは、上記の link での推奨事項が原因である可能性があります。
上書きまたは設定するsystemd設定がある場合は、ファイル/etc/systemd/system/mariadb.service.d/XXXX.confファイルを作成します。ここで、XXXXはあなたにとって意味のあるものであり、構成オプションを適切な場所に配置しますセクション、通常は[Service]。 systemdオプションがリストの場合、置換値を設定する前にこれを空に設定する必要があるかもしれません...
オンライン記事へのフィードバックには、次のことを指摘する短いコメントがあります。
MariaDB 10.1.17およびその他の最近のリリースには、initdスクリプトとsystemdユニットがまだ含まれています。 initスクリプトはchkconfigがオンの状態で出荷され、これによりデーモンのどのバージョンが最初に起動するかに関して競合状態が発生します。これにより、RPMの更新とシステムの再起動で重大な問題が発生します。
これにより、問題を特定するために(この投稿の最初のバージョンで指摘されているように)構成ファイルのinit.dバリアントを検索する必要があるかもしれないという結論に至ります。
Mysqlまたはmariadbファイルが存在するかどうか、ディレクトリ/etc/init.d
を確認します。
ls /etc/init.d -lash
次に、対応するファイル(私のUbuntuサーバーのmysqlなど)を開くと、起動部分を見つけることができます。
cat /etc/init.d/mysql
(注:mysqldファイルはなく、プレーンなmysqlファイルのみ)
ある時点で、サービス起動スクリプトに健全性チェックがあります。
## Do some sanity checks before even trying to start mysqld.
sanity_checks() {
# check for config file
if [ ! -r /etc/mysql/my.cnf ]; then
log_warning_msg "$0: WARNING: /etc/mysql/my.cnf cannot be read. See README.Debian.gz"
echo "WARNING: /etc/mysql/my.cnf cannot be read. See README.Debian.gz" | $ERR_LOGGER
fi
したがって、私のセットアップの実際のファイルは/etc/mysql/my.cnfファイルになります。次にそこから行きます。
構成は異なる場合がありますが、この知識があれば、サービスの構成ファイルを見つけることができます。
これが私がUbuntu 16で見つけた方法です
#list all timer
systemctl list-timers #--> got apt-daily.service
#locate where is systemd
Sudo find / -name apt-daily.service
> /lib/systemd/system/apt-daily.service #--> /lib/systemd/system/
より一般的には、名前でファイルを見つけるには、次のいずれかの方法を使用できます。
find / -iname "<filename>"
updatedb && locate <filename>
Ubuntuでは、次の場所にあります。
/lib/systemd/system/mysql.service
私はかつてsystemctl enable mysql.serviceコマンドを実行しようとしましたが、/ etc/systemd/system /(通常はそこにハードリンクがあります)でファイルを検索し、私の場合はmysql.serviceがないことがわかりましたそこにファイルします。だから私はハードリンクを作成しました:
ln -T /lib/systemd/system/mysql.service /etc/systemd/system/mysql.service