![Linux Ubuntu에서 재개 후 중단된 위치부터 스크립트를 어떻게 재개할 수 있습니까? 어쨌든 rc.local을 사용할 수 있나요?](https://rvso.com/image/922436/Linux%20Ubuntu%EC%97%90%EC%84%9C%20%EC%9E%AC%EA%B0%9C%20%ED%9B%84%20%EC%A4%91%EB%8B%A8%EB%90%9C%20%EC%9C%84%EC%B9%98%EB%B6%80%ED%84%B0%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EB%A5%BC%20%EC%96%B4%EB%96%BB%EA%B2%8C%20%EC%9E%AC%EA%B0%9C%ED%95%A0%20%EC%88%98%20%EC%9E%88%EC%8A%B5%EB%8B%88%EA%B9%8C%3F%20%EC%96%B4%EC%A8%8C%EB%93%A0%20rc.local%EC%9D%84%20%EC%82%AC%EC%9A%A9%ED%95%A0%20%EC%88%98%20%EC%9E%88%EB%82%98%EC%9A%94%3F.png)
재개 후 스크립트를 재개하기 위해 rc.local을 어떻게 사용할 수 있습니까?
사용자 의견의 일부 설명:
Boot_desired_kernel() {}
# after this system will reboot
Do_task(){}
Do_task() /*
init.d에 파일을 붙여넣고 업데이트하면 재부팅 후 스크립트가 실행되도록 작동하지만 예상되는 것은 스크립트가 재부팅 전에 중단된 부분부터 시작되어야 한다는 것입니다.
답변1
를 사용하여 어떻게 수행하는지 모르겠지만 rc.local
아마도 다음 방법에 만족할 것입니다 systemd
.
새로운 시스템 서비스를 생성합니다:
sudo vim.tiny /etc/systemd/system/startscript.service
좋아하는 다른 편집기
nano
대신 옆에 붙여넣을 수 있습니다 .vim.tiny
[Unit] Description=Start script after resume After=suspend.target [Service] Type=simple ExecStart=/full/path/to/the/script.sh [Install] WantedBy=suspend.target
서비스를 활성화하고 시작합니다.
sudo systemctl enable startscript && sudo systemctl start startscript
답변2
재부팅 후 스크립트 실행을 재개하는 방법은 모르겠지만 커널 버전을 확인하고 커널 버전이 필요한 경우 다음 스크립트와 같이 커널 변경 및 재부팅 부분을 건너 뛰고 나머지 스크립트를 실행할 수 있습니다. 그러나 스크립트는 처음 재부팅하기 전과 재부팅할 때마다 실행됩니다.
#!/bin/bash
kernel="5.3.0-40-generic"
if [[ $(uname -a) != *$kernel* ]]; then
kernlist="$(grep -i "menuentry '" /boot/grub/grub.cfg|sed -r "s|--class .*$||g")"
printf "%s$kernlist\n" | logger
menuline="$(printf "%s$kernlist\n"|grep -ne $kernel | grep -v recovery | cut -f1 -d":")"
menunum="$(($menuline-2))"
grub-reboot "1>$menunum"
echo "The next grub's menu entry will be choosen after the reboot:\n 1>$menunum" | logger
reboot
fi
if [[ $(uname -a) == *$kernel* ]];
then echo "This command is executed after reboot to $kernel" | logger;
fi
echo "Currently running kernel version is: $(uname -r)" | logger
재부팅 후 현재 커널이 필수 버전인 경우 커널 선택 부분 실행을 건너뛰고 다음을 실행하면 "이 명령은 KERNEL_VERSION_HERE로 재부팅한 후 실행됩니다"를 에코합니다 journalctl -b | grep This
.
$ journalctl -b | grep Currently
Apr 13 17:35:51 lenovo root[1013]: Currently running kernel version is: 5.3.0-40-generic
이를 추가하면 systemd
기본 커널로 로드된 다음 자동으로 재부팅되고 5.3.0-40 일반 커널로 부팅됩니다.
$ cat /etc/systemd/system/resscript.service
[Unit]
Description=Start script after reboot
After=network.target
[Service]
Type=simple
ExecStart=/home/user/test/resscript.sh
[Install]
WantedBy=multi-user.target