「個人用systemd」の版間の差分
(ページの作成:「systemdは各ユーザーごとにユーザープロセス<ref><code>systemd --userとなる。</code>として立ち上げられているのでログイン時の起...」) |
(→例) |
||
| (同じ利用者による、間の3版が非表示) | |||
| 1行目: | 1行目: | ||
| − | [[systemd]]は各ユーザーごとにユーザープロセス<ref><code>systemd -- | + | [[systemd]]は各ユーザーごとにユーザープロセス<ref><code>systemd --user</code>となる。</ref>として立ち上げられているのでログイン時の起動などオートメーションに使用することができる。 |
==特徴== | ==特徴== | ||
* セッションごとではなくユーザーごと。複数のログインにおいて複数のsystemdが立ち上がるわけではない。 | * セッションごとではなくユーザーごと。複数のログインにおいて複数のsystemdが立ち上がるわけではない。 | ||
* 各ユーザーが指定する独自の定義は<code>~/.config/systemd/user</code>に入れる。 | * 各ユーザーが指定する独自の定義は<code>~/.config/systemd/user</code>に入れる。 | ||
| − | * 個人用systemdのインスタンスは<code>systemd --user</code>でシステムのものと同じように管理できる。 | + | * 個人用systemdのインスタンスは<code>systemd --user</code>でシステムのものと同じように管理できる。<ref>システム全体のものと比較するとroot権限がいらないという利点があるが、その分当該ユーザーが可能な行動に制限される。</ref> |
| − | * もちろんcgroupsに格納されるので各種のリソース制限などを利用することができる。 | + | * もちろんcgroupsに格納されるので各種のリソース制限などを利用することができる。<ref>もともとsystemdはinitを代わりとしてシステム全体のプロセスを管理しているものであり、実は個人用systemdを介さずとも全てのプロセスはsystemdから派生したプロセスであるが、設定ファイルの定義により、より自由度の高い、緻密な管理が行える。尚、個人用のsystemdも例外ではなく、systemdから派生するプロセスである。</ref> |
* 再起動時など、プロセスが終了される場合、適切な終了プロセスを踏んだ上で処理できる。 | * 再起動時など、プロセスが終了される場合、適切な終了プロセスを踏んだ上で処理できる。 | ||
==例== | ==例== | ||
===Syncthing=== | ===Syncthing=== | ||
| − | [ | + | [[Syncthing]]を立ち上げる場合。 |
<pre> | <pre> | ||
[Unit] | [Unit] | ||
| 18行目: | 18行目: | ||
KillSignal=SIGINT | KillSignal=SIGINT | ||
TimeoutSec=45 | TimeoutSec=45 | ||
| − | Restart= | + | Restart=always |
# Hardening | # Hardening | ||
| 28行目: | 28行目: | ||
===Freenet=== | ===Freenet=== | ||
| − | [ | + | [[Freenet]]を立ち上げる場合。 |
<pre> | <pre> | ||
| 49行目: | 49行目: | ||
[Install] | [Install] | ||
WantedBy=default.target | WantedBy=default.target | ||
| + | </pre> | ||
| + | |||
| + | ===Jupyter=== | ||
| + | [[Jupyter]]を立ち上げる場合。前提としてconda経由でプライベートな環境を切ってある。 | ||
| + | <code>/full/path/to/personal_env</code>を設定した環境に変更。 | ||
| + | |||
| + | <code>WorkingDirectory</code>はノートブックを格納してある場所に設定。こうするとその場所のみが再帰的にアクセス可能な場所になる。 | ||
| + | |||
| + | <pre> | ||
| + | [Unit] | ||
| + | Description=Jupyter Notebook | ||
| + | After=graphical.target | ||
| + | |||
| + | [Service] | ||
| + | Type=simple | ||
| + | ExecStart=/full/path/to/personal_env/bin/jupyter notebook | ||
| + | WorkingDirectory=/full/path/to/notebooks | ||
| + | TimeoutSec=60 | ||
| + | Restart=on-failure | ||
| + | |||
| + | # Hardening | ||
| + | PrivateTmp=yes | ||
| + | |||
| + | [Install] | ||
| + | WantedBy=multi-user.target | ||
</pre> | </pre> | ||
2017年7月9日 (日) 16:24時点における最新版
systemdは各ユーザーごとにユーザープロセス[1]として立ち上げられているのでログイン時の起動などオートメーションに使用することができる。
特徴
- セッションごとではなくユーザーごと。複数のログインにおいて複数のsystemdが立ち上がるわけではない。
- 各ユーザーが指定する独自の定義は
~/.config/systemd/userに入れる。 - 個人用systemdのインスタンスは
systemd --userでシステムのものと同じように管理できる。[2] - もちろんcgroupsに格納されるので各種のリソース制限などを利用することができる。[3]
- 再起動時など、プロセスが終了される場合、適切な終了プロセスを踏んだ上で処理できる。
例
Syncthing
Syncthingを立ち上げる場合。
[Unit] Description=Syncthing Personal Filesharing Cloud [Service] Type=simple ExecStart=/your/path/to/syncthing KillSignal=SIGINT TimeoutSec=45 Restart=always # Hardening PrivateTmp=yes [Install] WantedBy=default.target
Freenet
Freenetを立ち上げる場合。
[Unit] Description=Freenet -- The Free Network After=network.target [Service] Type=forking ExecStart=/your/path/to/run.sh start ExecStop=/your/path/to/run.sh stop ExecReload=/your/path/to/run.sh restart KillSignal=SIGINT TimeoutSec=45 Restart=on-failure # Hardening PrivateTmp=yes [Install] WantedBy=default.target
Jupyter
Jupyterを立ち上げる場合。前提としてconda経由でプライベートな環境を切ってある。
/full/path/to/personal_envを設定した環境に変更。
WorkingDirectoryはノートブックを格納してある場所に設定。こうするとその場所のみが再帰的にアクセス可能な場所になる。
[Unit] Description=Jupyter Notebook After=graphical.target [Service] Type=simple ExecStart=/full/path/to/personal_env/bin/jupyter notebook WorkingDirectory=/full/path/to/notebooks TimeoutSec=60 Restart=on-failure # Hardening PrivateTmp=yes [Install] WantedBy=multi-user.target