LXC 컨테이너는 명령줄에서 시작되지만 cron의 @reboot 또는 /etc/rc.init에서 자동으로 시작되지는 않습니다.

LXC 컨테이너는 명령줄에서 시작되지만 cron의 @reboot 또는 /etc/rc.init에서 자동으로 시작되지는 않습니다.

다음을 사용하면 언제든지 컨테이너를 성공적으로 시작할 수 있습니다.

fadedbee@host:~$ sudo lxc-start -n mycontainer

로컬 ZFS의 일부 디렉토리를 바인딩할 때까지 자동으로 시작되었습니다.

/etc/rc.local에 다음을 추가했습니다.

/bin/date >> /var/log/mycontainer.log
/bin/chmod a+r /var/log/mycontainer.log

/usr/bin/lxc-start -o /var/log/mycontainer.log

-l INFO -n mycontainer > /var/log/mycontainer.stdout 2> /var/log/mycontainer.stderr &

/var/log/mycontainer.log 파일이 생성되지만 날짜만 포함되고 다른 내용은 포함되지 않습니다.

루트의 crontab에 다음을 추가했습니다.

@reboot /usr/bin/lxc-start -o /var/log/mycontainer.log -l INFO -n mycontainer

그러나 그것도 아무런 성과를 내지 못했습니다.

나는 이 모든 일이 ZFS가 완성되기 전에 일어났을 것이라고 강하게 의심합니다. cron 항목에 추가해도 sleep 30 ;도움이 되지 않습니다.

나를 혼란스럽게 하는 것은 로그 stderr, stdout 또는 로그 출력을 전혀 얻지 못한다는 것입니다.

컨테이너를 자동으로 시작하거나 최소한 로그 출력을 확인하려면 어떻게 해야 하나요?


고쳐 쓰다:

나는 다음을 추가했습니다:

*/5 * * * * /usr/bin/lxc-start -n mycontainer

루트의 크론에 추가했지만 여전히 시작되지 않습니다. 이것동일한(sudo'd) bash 프롬프트의 명령이 작동합니다. 루트에 대한 나머지 cron 항목은 예상대로 작동합니다.

답변1

부팅 시 LXC 컨테이너를 시작하기 위해 lxc 시스템 서비스는 설명된 대로 lxc-autostart를 실행합니다.여기.

자동 시작을 구성하려면 컨테이너 구성에 다음 두 줄을 입력하세요.

lxc.start.auto = 1
lxc.start.delay = 30

지연은 초 단위로 원하는 값으로 설정할 수 있습니다.

crontab에는 아무것도 있을 수 없습니다. 시스템을 다시 시작하면 lxc 서비스가 해당 작업을 수행합니다.

시작 시 LXC 자동 시작이 실행되고 있는지 확인할 수 있습니다. systemd 시스템에서 이 작업을 수행하려면 systemd 서비스를 나열하고 lxc.service다음과 같이 확인할 수 있습니다.

systemctl -la | grep 'lxc\.service'

다음과 같은 줄이 표시되어야 합니다.

lxc.service             loaded    active   exited    LXC Container Initialization and Autoboot Code

다음과 같은 줄이 표시되지 않으면 서비스를 활성화해 보십시오.

sudo systemctl enable lxc

답변2

@rexkogitans가 제공하는 "공식" 솔루션을 사용하는 것이 좋습니다.

cron에서 시작되지 않은 프로그램은 일반적으로 다른 환경에 직면합니다. 실행 셸 sh과 환경 변수는 일반적으로 대화형 셸과 다릅니다. 관심이 있다면 cron과 같은 명령을 실행 set하고 env출력을 파일로 지정하세요.

답변3

편집: crontab -e에 필요한 경로 데이터를 추가하여 문제를 해결했습니다. 다음 줄을 추가했습니다.

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

crontab 주석 뒤와 작업 목록 앞.

문제(및 해결 방법)는 명령줄의 출력을 비교하여 부분적으로 확인할 수 있습니다.

env

(임시) 크론 작업:

* * * * * env > env_dump.txt

내 경우에는 경로가 동일하지 않았고 cron 경로가 lxc-start를 시작하기에 충분하지 않았습니다.

비슷한 문제가 있습니다. 부스팅 su -및 발행 (debian 11) 후 lxc-start -n test내 컨테이너는 명령줄에서 정상적으로 시작됩니다.

tar.gz rootfs 컨테이너를 중지한 다음 다시 시작하는 백업 스크립트가 있습니다. cron을 통해 cron에서 스크립트를 실행합니다 sh /home/dave/backup.sh. 모든 단계를 예상대로 수행하지만컨테이너를 다시 시작하지 못했습니다.완료되면. 유용한 오류 메시지를 찾을 수 없습니다. 쉘에서 이 정확한 명령을 실행하면 제대로 작동합니다. 어쨌든 cron에 관한 문제가 문제를 일으켰습니다. 이 문제가 해결된 적이 있나요?

관련 정보