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/crontab루트의 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

관련 정보