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