SSHFS を Systemd から BASH スクリプトを実行することでマウントしたい

この記事を作った動機 最近 Blender に Flamenco を導入して分散コンピューティング?を試す において、SMB ではなく SSHFSを使う必要があることがわかったので、SSHFS を試そうとしたところ、躓いたため記録を取る。 私の環境では、元々 SMB を使ってファイル共有を導入し、それを VPN 経由で利用していたが、それは普段の利用であってもファイルが大量にあるディレクトリを高遅延なネットワーク環境で開いたりすると1分ほど待たされたりするなど、明確に動作が遅いところがあった。そしてその挙動が、Blender の Flamenco の利用において顕著になり、限界が見受けられたため、SFTPを使った方法に移行するということがあった。 Blender の Flamenco において問題が起きる前までは、SMB 以外にすでに SFTP を使っていたが、それは Gnome Shell 内臓のファイラーで使っていたが、そちらでは、sftp://の URL から始まるパスで Gnome が勝手に独自でマウントしたフォルダーにアクセスするようになっている。SMB のときのように、マウントポイント用のフォルダを作成して、そこにネットワークドライブをマウントするという形態は取っていなかったため、問題になった。 そこで、SMB のように SFTP をマウントできる方法について、Google Gemini Fast 3に投げてみたところ、一つの提案として SSHFS を使う案が出てきたため試した。試したところ、コマンドラインにおいて、sshfsコマンドを使って、特定のフォルダに特定の SSH 接続先のフォルダをマウントするというような動作はできた。しかし、それを Systemd において自動化する際において、問題が起きた。 問題としては、私が Systemd に専用に備わっている方法や、/etc/fstab に明記する方法ではなく、起動後に自分で書いた専用の管理 Python スクリプトを Systemd で動かし、VPN と ネットワークドライブの管理を自分で自動的に行う方法を取っていたことによってその処理内容がsshfsコマンドの特性上適切でないことで起こった。SMB の時点では、/etc/fstab に書くことでネットワークドライブをマウントする方法もやっていたことがあった。しかし、それだと起動時やシャットダウン時において、ネットワークドライブにアクセスできなかった場合に、OS ごと巻き込んで、起動が途中で止まったりシャットダウンが途中で止まったりするなど、課題になったため、自分で手動で Systemd サービスやスクリプトを書いて起動して Gnome Shell にログインしてから具体的な処理が自動で走るように書いていた。その仕様が今回 SSHFS を導入するにあたって問題となった。 SSHFS - ArchWiki などに書いてあるように、専用の Systemd の automount を使ったりする方法もあるようであるが、私としては、ネットワークドライブは VPN の接続状況に応じて一緒に管理したいということがあった。SMB を使っていたときと同じように、SSHFS も自分でマウントするスクリプトを書いて、それを Systemd 経由でスクリプトとして実行し、専用の Python 管理スクリプトからは、systemd の自分で用意したネットワークドライブに関するサービスを叩くだけにしたいということがあった。 ...

March 24, 2026

Stable Diffusion WebUI が AURにあった 🎨

この記事を作った動機 なんか最近 AUR に Stable Diffusion WebUIが出現していて気軽に試せそうだったのでインストールして使ってみたということがあった。 その過程で記録しておきたいことがあったので、Stable Diffusion WebUI の導入過程とともに記事を書こうと思った。 環境 System Details Report Report details Date generated: 2025-07-13 20:41:10 Hardware Information: Hardware Model: HP ProLiant DL60 Gen9 Memory: 32.0 GiB Processor: Intel® Xeon® E5-2620 v4 × 16 Graphics: Unknown ※ GTX1080ti Disk Capacity: 30.0 TB Software Information: Firmware Version: U15 OS Name: Arch Linux OS Build: rolling OS Type: 64-bit GNOME Version: 48 Windowing System: X11 Kernel Version: Linux 6.15.5-arch1-1 導入 yay コマンドでインストール yay -Sy stable-diffusion-webui コンフィグの場所 /etc/stable-diffusion-webui/webui.conf ...

July 12, 2025

Systemd スクリプトを実行するサービスのテンプレート

この記事を作った動機 systemd を使って何かしらスクリプトを実行したい(例えば、自動的にネットワークドライブをマウントする)ときとかあるのですが、そのたびに検索したり過去に書いたスクリプトを漁るのは面倒なので、自分用にメモ書きのテンプレを置くだけです。本当にただの自分用テンプレなので、説明とかは全然していません。 配置場所 root で実行したい任意のサービス 操作には管理者権限で、sudo systemctl enable [サービス名]のようにする必要がある。 /etc/systemd/system/ ユーザーごとの任意のサービス 操作には、systemctl --user enable [サービス名]のようにして、--userスイッチが必要であり、サービスが保存されているユーザにログインして操作を行う必要がある。 ~/.config/systemd/user/ テンプレ After= は必ずしも指定する必要はない。依存するものがなければ、この項目はなくてもいい模様である。 スクリプトの実行 最小構成だと、Exec周りは、ExecStartだけでとりあえず動かすことができる。 [Unit] Description=a systemd service run a script. After= [Service] WorkingDirectory= Type=simple User=root # Group=[GroupName] # Environment="env=variable" ExecStartPre= ExecStart= ExecStartPost= ExecStopPre= ExecStop= ExecStopPost= Restart=on-failure [Install] WantedBy=multi-user.target プログラムの常駐 こちらも、最小構成だと、Exec周りは、ExecStartだけでとりあえず動かすことができる。ただ終了が強制終了になってしまうので注意する。 [Unit] Description=a systemd service run a script. After= [Service] WorkingDirectory= Type=forking User=root # Group=[GroupName] # Environment="env=variable" ExecStartPre= ExecStart= ExecStartPost= ExecStopPre= ExecStop= ExecStopPost= Restart=on-failure [Install] WantedBy=multi-user.target After= の設定 以下のようにして、どのサービスなどのあとにサービスを実行したいか、参考になると思われる。 ...

April 2, 2025