Ubuntu 16.10을 실행하는 Linode 서버에서 할당량을 설정하고 있는데 다음 오류가 발생합니다.
마운트 된 장치 / dev / root를 stat () 할 수 없습니다 : 해당 파일이나 디렉토리가 없습니다
이 문제를 해결하기 위해 수정을 위해이 스레드 에 도달했습니다.
ln -s /dev/xvda /dev/root
/etc/init.d/quota restart
에 /etc/rc.local
. 그러나 Ubuntu 16.10은 rc.local
더 이상 systemd 를 사용 하지 않습니다 . 에 대한 대안은 무엇입니까 rc.local
, 시작시 위의 명령을 어떻게 실행할 수 있습니까?
또한 서비스를 사용하도록 설정 systemctl enable rc-local.service
했지만 작동하지 않았습니다. 모든 리드를 부탁드립니다.
답변
소개
George의 링크에서 제안한대로 새 서비스를 작성해서는 안된다고 생각합니다. 는 rc-local.service
이미 systemd에 존재하고 서비스 파일은 제안 rc.local
이 존재하고 실행 가능한 경우, 에 자동으로 뽑아됩니다multi-user.target
. 따라서 방금 다른 방법으로 수행 한 작업을 다시 만들거나 강요 할 필요가 없습니다 systemd-rc-local-generator
.
하나의 솔루션
빠른 해결 방법 (정식적인 방법인지 모르겠습니다) :
터미널에서 다음을 수행하십시오.
printf '%s\n' '#!/bin/bash' 'exit 0' | sudo tee -a /etc/rc.local
sudo chmod +x /etc/rc.local
sudo reboot
그 후 rc.local
시스템 시작시가 호출됩니다. 원하는 것을 삽입하십시오.
배경
터미널에서 할 경우 :
sudo systemctl edit --full rc-local
헤드 주석에 다음과 같은 줄이 포함되어 있음을 알 수 있습니다.
# This unit gets pulled automatically into multi-user.target by
# systemd-rc-local-generator if /etc/rc.local is executable.
이는이 시스템에서 /etc/rc.local
실행 파일이라는 파일이 있으면 multi-user.target으로 자동으로 가져옵니다. 따라서 해당 파일 ( sudo touch...
)을 만들고 실행 가능하게 만듭니다 ( sudo chmod +x ...
).
답변
이 솔루션이 systemd
여기에 사용되는 것이 좋습니다 .
-
서비스를 작성하십시오.
sudo vi /etc/systemd/system/rc-local.service
-
거기에 코드를 추가하십시오 :
[Unit] Description=/etc/rc.local Compatibility ConditionPathExists=/etc/rc.local [Service] Type=forking ExecStart=/etc/rc.local start TimeoutSec=0 StandardOutput=tty RemainAfterExit=yes SysVStartPriority=99 [Install] WantedBy=multi-user.target
-
/etc/rc.local
실행 가능한지 확인 하고 그 안에이 코드를 추가하십시오 :sudo chmod +x /etc/rc.local
#!/bin/sh -e # # rc.local # # This script is executed at the end of each multiuser runlevel. # Make sure that the script will "exit 0" on success or any other # value on error. # # In order to enable or disable this script just change the execution # bits. # # By default this script does nothing. exit 0
-
서비스를 활성화하십시오 :
sudo systemctl enable rc-local
-
서비스를 시작하고 상태를 확인하십시오.
sudo systemctl start rc-local.service sudo systemctl status rc-local.service
-
모든 것이 잘
code
되면/etc/rc.local
파일에 파일을 추가 하고 다시 시작할 수 있습니다.
참고 : Lubuntu 16.10에서 테스트되었습니다.
출처:
https://www.linuxbabe.com/linux-server/how-to-enable-etcrc-local-with-systemd
답변
Jan의 대답에 추가하기 위해 일반적인 rc.local
파일 과 달리 rc-local service
모든 서비스가 시작된 후가 아니라 네트워크가 온라인 상태가 된 후에 실행됩니다.
경우에 따라 rc.local
나중에 명령을 실행할 수도 있습니다 . 예를 들어 lxd
시작 후 실행하기를 원했습니다 .
이 경우
컨텐츠와 함께 rc-local service
드롭 인 conf 파일을 작성하여 시작 종속성을
편집 할 수 있습니다 /etc/systemd/system/rc-local.service.d/override.conf
.
[Unit]
After=network.target lxd.service
필요한 단위 이름을 추가 할 수있는 위치 (추가 한 것처럼 lxd.service
)
systemctl daemon-reload
그 이후를 잊지 마십시오 .