crontab @rebootでtmuxを起動し、bashを使用する方法は?

crontab @rebootでtmuxを起動し、bashを使用する方法は?

次のようにtmux-launching-scriptを実行するcrontabがあります。

-sh-3.00# crontab -l
@reboot /root/scripts/tmux_autostart.sh

どこ

#!/bin/bash
# setup tmux session

tmux new -d -s my_session

しかし、システムが起動すると通常のプロンプトは表示されませんが、シェル迅速:

-sh-3.00#

自分の設定にすでにこのエントリがある場合、これをbashに変更するにはどうすればよいですか?.tmux.conf

set-option -g default-shell /bin/bash

編集する

-sh-3.00# cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly

答え1

あなたの@reboot仕事はルートのcrontabにあります。 crontabに設定された変数はそのcrontabにのみ適用されるため、crontabの設定は/etc/crontabrootのcrontabで実行される操作には影響しません。

Cronのデフォルトのシェルは、オーバーライドされない限り、環境変数が設定されること/bin/shです。だからTmuxは。SHELL/bin/shSHELL=/bin/sh

/bin/shバージョンがBash 3.00のようです。プロンプトは、bashがログインシェルで始まり、初期化ファイルが設定されていないことを示しますPS1(初期化ファイルがまったくない可能性があります)。

default-shellで設定すると、この変数は環境変数~/.tmux.confよりも優先されます。私はあなたがルートのホームディレクトリにSHELL表示されず、他の場所、おそらくあなた自身のホームディレクトリに表示されると思います。.tmux.conf

SHELL=/bin/bashルートのcrontabで設定するか、.tmux.confルートのホームディレクトリにファイルを書き込むかを選択できます。

答え2

予約されたこと

@rebootでこれを実行せずに数分ごとにtmuxがすでに実行されていることを確認するように少し再設定し、そうでない場合tmux_autostart.sh

はい

5分ごとに実行して実行していることを確認してくださいtmux_autostart.sh。まず、次のテストでtmux_autostart.sh開始されたことを確認できます。

# down
$ ps -eaf|grep -q "[t]mux_autostart.sh"
$ echo $?
1

# up
$ ps -eaf|grep -q "[t]mux_autostart.sh"
$ echo $?
0

その後、cronで上記のテストを使用できます。

*/5 * * * *  ps -eaf|grep -q "[t]mux_autostart.sh" && /root/scripts/tmux_autostart.sh

xinitrc

ログイン時にのみ起動するには、スクリプトをファイルに入れることができると思います$HOME/.xintrc。その後、ログインすると実行されます。

答え3

次のcronjobを使用してこれを行う方法があると思います。

@reboot . $HOME/profile; /root/scripts/tmux_autostart.sh

関連情報