コンテナはいつでも正常に起動できます。
fadedbee@Host:~$ Sudo lxc-start -n mycontainer
ローカルZFS上のいくつかのディレクトリをバインドするまで、これは自動的に開始されていました。
以下を/etc/rc.localに追加しました。
/bin/date >> /var/log/mycontainer.log
/bin/chmod a+r /var/log/mycontainer.log
/usr/bin/lxc-start -o /var/log/mycontainer.log
-l INFO -n mycontainer> /var/log/mycontainer.stdout 2> /var/log/mycontainer.stderr&
/var/log/mycontainer.logファイルが作成されますが、日付のみが含まれ、他には何も含まれません。
Rootのcrontabに以下を追加しました。
@reboot /usr/bin/lxc-start -o /var/log/mycontainer.log -l INFO -n mycontainer
しかし、それでも結果は得られませんでした。
ZFSが終了する前に、これらすべてのことが起こっているのではないかと強く思います。 cronエントリにsleep 30 ;
を追加しても役に立ちませんでした。
私を混乱させているのは、ログstderr、stdout、またはログ出力がまったく得られないことです。
コンテナを自動的に起動させる、または少なくともログ出力を表示するにはどうすればよいですか?
更新:
私は追加しました:
*/5 * * * * /usr/bin/lxc-start -n mycontainer
ルートのcronに移動しますが、それでも起動しません。 bashプロンプトからの同じ(Sudo'd)コマンドは機能します。ルートの残りのcronエントリは期待どおりに機能しています。
起動時にLXCコンテナーを開始するために、lxcシステムサービスは、文書化されているようにlxc-autostartを実行します ここ 。
自動開始を構成するには、コンテナー構成に次の2行を入れます。
lxc.start.auto = 1
lxc.start.delay = 30
遅延は、秒単位の任意の値に設定できます。
Crontabには何も含まれていてはなりません。システムを再起動するだけで、lxcサービスがその仕事をします。
LXC自動起動が起動時に実行されているかどうかを確認することをお勧めします。 systemdシステムでこれを行うには、systemdサービスを一覧表示し、次のようにlxc.service
を確認します。
systemctl -la | grep 'lxc\.service'
次のような行が表示されます。
lxc.service loaded active exited LXC Container Initialization and Autoboot Code
そのような行が表示されない場合は、サービスを有効にしてみてください。
Sudo systemctl enable lxc
@rexkogitansが提供する「公式」ソリューションを使用することを強くお勧めします。
Cronで始まらないプログラムは、多くの場合、異なる環境に悩まされます。実行中のシェルは通常sh
であり、環境変数はインタラクティブシェルとは異なります。興味がある場合は、cronからset
やenv
などのコマンドを実行し、それらの出力をファイルに送信します。