시작 후 Shadowsocks 서버가 자동으로 실행되도록 하려고 하는데 이 rc.local
파일을 사용했지만 작동하지 않습니다.
rc.local
지금은:
/usr/local/bin/ssserver -c /etc/shadowsocks.json -d start
#!/bin/bash
exit 0
a+x
권한을 추가했습니다/etc/rc/d/rc.local
.- 또한 제안된 대로 심볼릭 링크를 수정했습니다
/etc/rc.local -> /etc/rc.d/rc.local
(기본 권한).777
여기.
그러나 시작 시 코드가 rc.local
여전히 실행되지 않습니다. rc.local
시스템이 시작되었을 때 시스템이 실행되고 있지 않은 것으로 나타났습니다 . 도움을 받아여기, 문제를 더 자세히 진단할 수 있었습니다.
/etc/systemd/system/rc-local.service
파일 은 다음과 같습니다 (아무 것도 변경하지 않았습니다).
[Unit]
Description=/etc/rc.d/rc.local Compatibility
ConditionFileIsExecutable=/etc/rc.d/rc.local
After=network.target
[Service]
Type=forking
ExecStart=/etc/rc.d/rc.local start
TimeoutSec=0
RemainAfterExit=yes
GuessMainPID=no
-- 이 파일은 괜찮은가요?
이 작업을 수행하면 systemctl enable rc-local
다음 오류가 발생합니다.
The unit files have no installation config (WantedBy, RequiredBy, Also, Alias
settings in the [Install] section, and DefaultInstance for template units).
This means they are not meant to be enabled using systemctl.
Possible reasons for having this kind of units are:
1) A unit may be statically enabled by being symlinked from another unit's
.wants/ or .requires/ directory.
2) A unit's purpose may be to act as a helper for some other unit which has
a requirement dependency on it.
3) A unit may be started when needed via activation (socket, path, timer,
D-Bus, udev, scripted systemctl call, ...).
4) In case of template units, the unit is meant to be enabled with some
instance name specified.
rc.local
제 경우에는 파일이 너무 단순 해서 원인이 무엇인지 잘 모르겠습니다 .
답변1
rc.local이 손상되었습니다!
/usr/local/bin/ssserver -c /etc/shadowsocks.json -d start
#!/bin/bash
exit 0
~해야 한다
#!/bin/bash
/usr/local/bin/ssserver -c /etc/shadowsocks.json -d start
exit 0
편집하다:
귀하의 시스템 서비스 rc.local
에 어떤 문제가 있는지 잘 모르겠습니다.
그러나 Shadowsock을 시작하고 중지할 수 있도록 별도의 systemd 장치를 만들겠습니다. 예를 들어 구성을 다시 로드하려는 경우 서버를 유지 관리해야 하는 사용자와 다른 사람은 Serve를 다시 시작해야 할 대상을 알 수 있습니다.
Shadowsocks 시스템 단위 파일의 예:
[Unit]
Description=Shadowsocks proxy server
[Service]
User=www-shadow
Group=www-shadow
Type=simple
ExecStart=/usr/local/bin/ssserver -c /etc/shadowsocks/shadowsocks.json -a shadowsocks -v start
ExecStop=/usr/local/bin/ssserver -c /etc/shadowsocks/shadowsocks.json -a shadowsocks -v stop
[Install]
WantedBy=multi-user.target
여기에는 그룹의 구성원 www-shadow
인 에이전트를 실행하는 사용자가 있습니다 . 일을 깔끔하게 www-shadow
유지하려면 디렉터리를 만들고 JSON 및 기타 Shadowsocks 관련 파일을 디렉터리에 넣는 것이 /etc
좋습니다 . /etc/shadowsocks
다음 웹사이트에서 위의 시스템 단위 파일에 대한 기본 정보를 얻었습니다.linode.com, 그러나 그들은 에이전트를 루트로 실행하려고 합니다(baaaaaaaaaad)... 8388
기본적으로 포트를 사용한다는 점을 고려하면 이것이 필요한지 의심됩니다. 해당 단위에 대한 사용자 및 그룹을 생성 하지 않으면 www-shadow
systemd가 서비스를 원활하게 실행한다는 점에 유의하십시오 root
(간단히 말하면 "분명히" 이는 의도적으로 설계된 것입니다).
나는 Shadowsocks에 대한 경험이 없으며(오징어를 프록시로 사용하고 SSH를 양말 프록시로 사용한 적이 있습니다 ;-) 찾아볼 시간이 없었지만 장치 파일을 잠깐 살펴본 후에는 합리적으로 보입니다. (어리석은 것은 제외하고 root
).
이전 버전과의 호환성을 위해 단위 파일을 사용하는 것은 rc.local
별로 의미가 없습니다. IMHO 당신은 ExecStop을 놓쳤고 rc.local은 Shadowsocks라는 것을 기억해야 합니다...
이 장치를 고치려면 ( ) rc.local
이어야 합니다 . 아무도 쓰기 가능한 데몬 스크립트를 원하지 않습니다. 이는 또 다른 문제일 수 있습니다. IMHO, systemd가 항상 합리적인 것은 아니지만, 전 세계적으로 쓰기 가능한 스크립트를 실행할지는 의문입니다.755
chmod 755 /etc/rc.d/rc.local
안전을 위해 ls -l /etc/rc.d/rc.local
질문에 출력을 게시할 수 있습니까?
편집 2:
이런(어리석은 나, 항상 거기에 있었고 나는 눈치 채지 못했습니다), 유닛 파일에 다음 지시어가 없습니다 [Install]
:
[Install]
WantedBy=multi-user.target
답변2
Fedora 27은 다음을 사용하여 systemd
실행되지 않습니다 ./etc/rc.local
몇 가지 제안된 솔루션이나 해결 방법이 있습니다.우분투에 물어보세요
답변3
/etc/rc.local이 "실행 중"인지 확인하려면 /etc/rc.local에 다음과 같이 입력하면 됩니다.
/bin/날짜 >> /root/test.txt
재부팅하고 /root/test.txt 파일에서 날짜를 확인하세요.
답변4
GUI를 사용하면 다양한 애플리케이션을 쉽게 시작하고 중지할 수 있습니다. 이를 설치하고 사용해 보세요 gnome-tweak-tool
(물론 GUI를 사용할 수 있는 경우).