tag:crieit.net,2005:https://crieit.net/tags/systemd/feed 「systemd」の記事 - Crieit Crieitでタグ「systemd」に投稿された最近の記事 2022-11-19T08:33:44+09:00 https://crieit.net/tags/systemd/feed tag:crieit.net,2005:PublicArticle/18318 2022-11-19T08:32:00+09:00 2022-11-19T08:33:44+09:00 https://crieit.net/posts/systemd-supported-in-wsl 【WSL2】systemdがサポートされたようなので試してみた <p>ここ数年はWindowsの環境をクリーンインストールするたびにWSL2の環境を作り直し、その度にgenieを使ってsystemdをPID 1 にするための方法をメモしてきました。<br /> <a target="_blank" rel="nofollow noopener" href="https://shikiyura.com/2020/06/execute_systemctl_on_wsl2/">【WSL2】systemctlが動かない問題をきちんと解決する</a><br /> <a target="_blank" rel="nofollow noopener" href="https://shikiyura.com/2020/08/run_systemd_as_pid_1_on_wsl2/">【WSL2】Ubuntu20.04でPID1をSystemdにする</a><br /> <a target="_blank" rel="nofollow noopener" href="https://shikiyura.com/2021/03/run_systemd_as_pid_1_on_wsl2_at_202103/">【WSL2/Ubuntu】systemdをPID1で動かす 2021年3月版</a></p> <p>しかし、気が付いたらWSL自体がsystemdをサポートしたようなので、WSLだけでsystemdをPID 1にしてみたのでメモしておきます。</p> <p>詳しいことは公式ブログを参照ください。<br /> <a target="_blank" rel="nofollow noopener" href="https://devblogs.microsoft.com/commandline/systemd-support-is-now-available-in-wsl/">Systemd support is now available in WSL!</a></p> <h2 id="設定手順"><a href="#%E8%A8%AD%E5%AE%9A%E6%89%8B%E9%A0%86">設定手順</a></h2> <p>公式ブログによると、WSLのバージョンが0.67.6以上で使えるとのこと。<br /> なお、手元のWSLのバージョンを確認するとすでに1.0になっていたのでだいぶ前から使えたんだなぁともっと早く気づきたかった気持ちでいっぱいです。<br /> 確認するためのコマンドは以下の通り。</p> <pre><code class="powershell">powershell > wsl --version WSL バージョン: 1.0.0.0 カーネル バージョン: 5.15.74.2 WSLg バージョン: 1.0.47 MSRDC バージョン: 1.2.3575 Direct3D バージョン: 1.606.4 DXCore バージョン: 10.0.25131.1002-220531-1700.rs-onecore-base2-hyp Windowsバージョン: 10.0.22621.819 </code></pre> <p>なお、WSLの更新もwslコマンドでできるようになったようなので、バージョンが古い場合は以下のコマンドで更新すればよい。</p> <pre><code class="powershell">powershell > wsl --update </code></pre> <p>次に、WSL環境にwsl.confというファイルを作成し、以下を書き込む。</p> <pre><code class="bash">wsl(Ubuntu) > sudo emacs /etc/wsl.conf # 以下を追記 [boot] systemd=true </code></pre> <p>書き込んだらWSL環境を再起動。<br /> これにて準備完了です。</p> <pre><code class="powershell">powershell > wsl --shutdown </code></pre> <p>この後、WSL環境に入りsystemctlを動かしてみます。<br /> 以下のようにエラーが起きずにつらつら表示されたらOK。</p> <pre><code class="bash">wsl(Ubuntu) > systemctl UNIT LOAD ACTIVE SUB DESCRIPTION > sys-devices-LNXSYSTM:00-LNXSYBUS:00-ACPI0004:00-VMBUS:00-0fd20160\x2d7ac7\x2d4158\x2d9e38\x2d8685d280c3a6-net-eth0.device loaded active plugged /sys/devices/LNXSYSTM:00/LNXSYBUS:00/ACPI0004:00/VMBUS:> sys-devices-LNXSYSTM:00-LNXSYBUS:00-ACPI0004:00-VMBUS:00-ba31a026\x2d5b46\x2d4a8d\x2da6dc\x2df00324cf1e90-pci5b46:00-5b46:00:00.0-virtio0-virtio\x2dports-vport0p0.device loaded active plugged /sys/devices/LNXSYSTM:00/LNXSYBUS:00/ACPI0004:00/VMBUS:> sys-devices-LNXSYSTM:00-LNXSYBUS:00-ACPI0004:00-VMBUS:00-fd1d2cbd\x2dce7c\x2d535c\x2d966b\x2deb5f811c95f0-host0-target0:0:0-0:0:0:0-block-sda.device loaded active plugged Virtual_Disk sys-devices-LNXSYSTM:00-LNXSYBUS:00-ACPI0004:00-VMBUS:00-fd1d2cbd\x2dce7c\x2d535c\x2d966b\x2deb5f811c95f0-host0-target0:0:0-0:0:0:1-block-sdb.device loaded active plugged Virtual_Disk sys-devices-LNXSYSTM:00-LNXSYBUS:00-ACPI0004:00-VMBUS:00-fd1d2cbd\x2dce7c\x2d535c\x2d966b\x2deb5f811c95f0-host0-target0:0:0-0:0:0:2-block-sdc.device loaded active plugged Virtual_Disk sys-devices-platform-serial8250-tty-ttyS0.device loaded active plugged /sys/devices/platform/serial8250/tty/ttyS0 sys-devices-platform-serial8250-tty-ttyS1.device loaded active plugged /sys/devices/platform/serial8250/tty/ttyS1 sys-devices-platform-serial8250-tty-ttyS2.device loaded active plugged /sys/devices/platform/serial8250/tty/ttyS2 sys-devices-platform-serial8250-tty-ttyS3.device loaded active plugged /sys/devices/platform/serial8250/tty/ttyS3 ... </code></pre> <h2 id="まとめ"><a href="#%E3%81%BE%E3%81%A8%E3%82%81">まとめ</a></h2> <p>今回は、WSLがsystemdをサポートしたということで設定してみました。<br /> 今後はgenieを入れずともWSLだけでsystemdを使えるので、より手軽に環境を使えるようになりました。</p> <p>今回は、ここまで。</p> <p>おわり</p> しきゆら tag:crieit.net,2005:PublicArticle/15515 2019-10-29T17:42:48+09:00 2019-10-29T17:45:13+09:00 https://crieit.net/posts/systemd-timer systemd/timerを使ってサーバを毎晩リブートさせる <p>サーバを定期的に再起動したいという需要は常に存在します。</p> <p>どっかの誰かが開放し忘れたコードにより徐々に減っていく空きメモリ。原因を追求するより、定期的に再起動しちゃえば一発解決だよね🧙</p> <p>なんか時々落ちるこのサービス、いっそ定期的にサーバを再起動しておけば、たとえ落ちたとしても復活するから、大体の時間は動いてるサービスにできるんじゃないの?😈</p> <p>いいことか悪いことか、かっこいいかどうかはともかくとして、定期的にサーバを再起動しておけば解決できるある種の問題が存在することは事実です。問題の先送りだって一つの技術力ですし(後ろめたいときって前置きが長くなるよね)</p> <p>ともかくそういうわけで何らかの理由でサーバを定期的に再起動させたいときの設定です。</p> <p>CentOS7から標準になったSystemdのTimer機能を使います</p> <h1 id="serviceの作成と登録"><a href="#service%E3%81%AE%E4%BD%9C%E6%88%90%E3%81%A8%E7%99%BB%E9%8C%B2">serviceの作成と登録</a></h1> <pre><code class="shell-session">$ sudo nano /etc/systemd/system/reboot.service </code></pre> <pre><code class="config">[Unit] Description=Scheduled Reboot [Service] Type=simple ExecStart=/usr/bin/systemctl --force reboot </code></pre> <p>こうやって出来たserviceファイルを</p> <pre><code class="console">sudo systemctl enable reboot </code></pre> <p>で登録します。</p> <p>この段階で、</p> <pre><code class="console">sudo systemctl start reboot </code></pre> <p>ってたたいてあげると、サーバが予告なく再起動するかと思います。</p> <p>Q: rebootコマンドじゃないの?<br /> A: rebootとかhaltはCentOS7から非推奨になりました<br /> <a target="_blank" rel="nofollow noopener" href="https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/7/html/system_administrators_guide/sect-managing_services_with_systemd-power">10.4. システムのシャットダウン、サスペンド、休止状態 Red Hat Enterprise Linux 7 | Red Hat Customer Portal</a></p> <h1 id="Timerの作成と登録"><a href="#Timer%E3%81%AE%E4%BD%9C%E6%88%90%E3%81%A8%E7%99%BB%E9%8C%B2">Timerの作成と登録</a></h1> <h1 id="serviceの作成と登録"><a href="#service%E3%81%AE%E4%BD%9C%E6%88%90%E3%81%A8%E7%99%BB%E9%8C%B2">serviceの作成と登録</a></h1> <pre><code class="shell-session">$ sudo nano /etc/systemd/system/reboot.timer </code></pre> <pre><code class="config">[Unit] Description=schedule reboot [Timer] Unit=reboot.service OnCalendar=*-*-* 5:30:00 [Install] WantedBy=timers.target </code></pre> <p>この例では毎朝5:30に再起動する記述になっています</p> <pre><code class="console">sudo systemctl enable reboot.timer sudo systemctl start reboot.timer </code></pre> <p>で登録します。</p> <pre><code class="console">$ sudo systemctl list-timers --all NEXT LEFT LAST PASSED UNIT ACTIVATES Tue 2019-10-29 17:04:33 JST 4min 59s left n/a n/a systemd-tmpfiles-clean.timer systemd-t Wed 2019-10-30 05:30:00 JST 12h left n/a n/a reboot.timer reboot.se n/a n/a n/a n/a systemd-readahead-done.timer systemd-r </code></pre> <p>という具合に、次の5:30にrebootが予定されていれば出来上がりです。よい再起動ライフを!</p> daisuke furukawa