web-dev-qa-db-ja.com

TTYなしでcronプログラムに接続するための最良の方法は何ですか

私のubuntu VMはTTYでcronジョブを実行しません(ログインしてユーザーの環境からコマンドを実行した場合でも)。

このため、cronはtmuxまたはscreenを実行できず、プログラム(具体的にはこの場合はrtorrent)をシンプルでアタッチ可能な方法でバックグラウンドで実行できません。

起動時にrtorrentのようなプログラムを実行し、任意の端末からプロセスを簡単にアタッチ、デタッチ、および強制終了できるようにするための最良のアプローチは何ですか?

rtorrent &と同等のものを実行するだけで実行できると思いますが、これはscreen/tmuxほど便利ではありません。

2
tbg

-dオプションをtmux newと一緒に使用すると、ttyに接続したり、ttyを必要としたりしません。 man tmuxから:

new-session [-AdDEP] [-c start-directory] [-F format] [-n window-name]
            [-s session-name] [-t group-name] [-x width] [-y height]
            [Shell-command]
            (alias: new)

Session-nameという名前で新しいセッションを作成します。

-dが指定されていない限り、新しいセッションは現在の端末に接続されます。 [...]

例えば:

tmux new -d -s rtorrent rtorrent

これにより、「rtorrent」という新しいtmuxセッションが作成され、その中でrtorrentが実行されます。

実行環境を正しくセットアップするには、おそらく~/.tmux.confを構成し、スクリプトを実行してrtorrent(裸のrtorrentコマンドだけではなく)を開始する必要があります。

Cronジョブを所有するユーザーは、次の方法でいつでもセッションに接続できます。

tmux attach -t rtorrent

Screenに相当するものは

screen -d -m -S rtorrent rtorrent

cronジョブとscreen -S rtorrent -rdから後で添付します。

7
cas