私はArchWikiガイドに従って書くことを試みています。カスタムサービスファイル発表DAFメールシステム全体のデーモンとして機能します。過去には ~/.xinitrc に次のような行がありました。
nohup /usr/bin/davmail /etc/conf.d/davmail.properties
DavMailの指示に従ってください(/usr/bin/davmail
シンボルリンクはどこにありますか/usr/share/java/davmail/davmail.sh
?)。今私のコンピュータをヘッドレスサーバーに切り替えたので、自動イニシエータはXセッションとは無関係になりたいです。
DavMail initスクリプトについてオンラインで見たすべてのガイドは、ディストリビューションがsystemdではなくsysvinitを使用していると仮定しています。 systemdサービスファイルをカスタマイズする私の試みは次のとおりです。
[Unit]
Description=DavMail Exchange Gateway
Requires=network.target
After=network.target
[Service]
Type=forking
RemainAfterExit=yes
ExecStart=/usr/bin/davmail /etc/conf.d/davmail.properties
ExecStop=killall davmail
[Install]
WantedBy=multi-user.target
正しくフォークできません。 systemdが無効な引数について文句を言うので、ExecStart
コマンドプレフィックスを付ける/usr/bin/nohup
ことは役に立ちません(以前のフォーラムの答えを正しく理解した場合は、デーモン自体を制御することをお勧めします)。サービスタイプをoneshot
またはに変更してsimple
も失敗します。
ここで1つの問題は、DavMailを実行するにはJavaインタプリタが必要であり、systemdサービスファイルはJavaインタプリタにタスクを渡すシェルスクリプトほど柔軟ではないということです。しかし、たぶんもっと簡単な説明があるかもしれません。共有したいDavMail用のシステムサービスファイルを正常に作成した人はいますか?
ベストアンサー1
これを単純なサービスとして定義する必要があります(ポーキングは、デーモンがすでに起動されたときに完了するプロセスのためのものです)。 Archでは魅力のように動作するので
[Unit]
Description=DavMail Exchange Gateway
Requires=network.target
After=network.target
[Service]
Type=simple
RemainAfterExit=no
ExecStart=/usr/bin/davmail /etc/conf.d/davmail.properties
ExecStop=killall davmail
[Install]
WantedBy=multi-user.target