다음과 같이 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
루트의 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