Ubuntu 16.10を実行しているLinodeサーバーでクォータを設定していますが、次のエラーが表示されます
マウントされたデバイス/ dev/rootをstat()できません:そのようなファイルまたはディレクトリはありません
これを修正するために、 this thread に到達しました。
ln -s /dev/xvda /dev/root
/etc/init.d/quota restart
/etc/rc.local
に。しかし、Ubuntu 16.10はrc.local
を使用せず、代わりに systemd を使用します。 rc.local
の代替手段は何ですか、起動時に上記のコマンドを実行するにはどうすればよいですか?
また、systemctl enable rc-local.service
を使用してサービスを有効にしましたが、うまくいきませんでした。リードをいただければ幸いです。
ジョージのリンクで提案されているように、新しいサービスを作成すべきではないと思います。 rc-local.service
はsystemdに既に存在し、サービスファイルは、rc.local
が存在し、実行可能であれば、multi-user.target
に自動的にプルされますを示します。したがって、systemd-rc-local-generator
によって別の方法で行われた何かを再作成または強制する必要はありません。
簡単な回避策(それが標準的な方法かどうかわかりません):
ターミナルで:
printf '%s\n' '#!/bin/bash' 'exit 0' | Sudo tee -a /etc/rc.local
Sudo chmod +x /etc/rc.local
Sudo reboot
その後、rc.local
がシステムの起動時に呼び出されます。必要なものを挿入します。
ターミナルで行う場合:
Sudo systemctl edit --full rc-local
ヘッドコメントには次のような行が含まれていることがわかります。
# This unit gets pulled automatically into multi-user.target by
# systemd-rc-local-generator if /etc/rc.local is executable.
これは、このシステムに、実行可能な/etc/rc.local
というファイルがある場合、multi-user.targetに自動的にプルされることを示しています。したがって、対応するファイル(Sudo touch...
)を作成し、実行可能にする(Sudo chmod +x ...
)だけです。
systemd
here の使用を含むこのソリューションが提案されているのを見ました。
サービスを作成します。
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
/etc/rc.local
を作成して実行可能にし、その中にこのコードを追加します。
Sudo chmod +x /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.
exit 0
サービスを有効にします。
Sudo systemctl enable rc-local
サービスを開始してステータスを確認します。
Sudo systemctl start rc-local.service
Sudo systemctl status rc-local.service
すべてうまくいけば、code
を/etc/rc.local
ファイルに追加してから再起動できます。
注:Lubuntu 16.10。でテスト済み.
ソース:
https://www.linuxbabe.com/linux-server/how-to-enable-etcrc-local-with-systemd
Jan's answer に追加するには、通常のrc.local
fileとは異なり、rc-local service
はすべてのサービスが開始された後ではなく、ネットワークがオンラインになった後に実行されます。
場合によっては、後でrc.local
からコマンドを実行することもできます。たとえば、lxd
startの後に実行するようにしました。
この場合、ドロップイン構成ファイルrc-local service
を作成して、/etc/systemd/system/rc-local.service.d/override.conf
起動依存関係を編集できます。
[Unit]
After=network.target lxd.service
必要なユニット名を追加できる場所(lxd.service
を追加したように)
その後systemctl daemon-reload
を忘れないでください。