次のように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/crontab
rootのcrontabで実行される操作には影響しません。
Cronのデフォルトのシェルは、オーバーライドされない限り、環境変数が設定されること/bin/sh
です。だからTmuxは。SHELL
/bin/sh
SHELL=/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