Ich führe die folgenden Befehle in Ubuntu 14.04 aus:
root@ubuntu:~# service rpki-ca restart
stop: Unknown job: rpki-ca
start: Unknown job: rpki-ca
root@ubuntu:~# sudo service rpki-ca restart
rpki-ca stop/waiting
rpki-ca start/running
root@ubuntu:~#
Welchen Effekt hat sudo
der zweite Befehl? Warum braucht root sudo
?
Antwort1
Ok, googeln Sie dies, finden Sie diesU&L-Antwort, überprüft seineRevisionsverlaufund gemäß der zitierten Quelle imRevision #1, das ist zufällig einUpstart-Fehler; das Problem besteht darin, dass beim Wechsel zur Root-Ausführung su
die $UPSTART_SESSION
Umgebungsvariable aus der vorherigen Umgebung übernommen wird, anstatt erneut festgelegt zu werden.
Nach langem Kopfzerbrechen und Googeln habe ich einen Beitrag gefunden (https://unix.stackexchange.com/questions/120050/sudo-service-vsftpd-returns-unknown-job-vsftpd) Zeigt das
sudo service xxxx start
(oder stoppen oder neu starten)funktioniert, während
`service xxxx starten (in einer su-Sitzung)
funktioniert nicht.
Der Übeltäter war also eindeutig die Umgebung: Wenn Sie sich mit „su“ statt mit „sudo su“ oder „su -“ als Root anmelden, funktioniert auch „service“ nicht richtig, da „su“ den Großteil Ihrer normalen Benutzerumgebung in die Root-Sitzung überträgt.
Nach einigen Tests habe ich herausgefunden, dass der Übeltäter die Umgebungsvariable UPSTART_SESSION ist, die gesetzt wird, wenn Sie „su“ verwenden, aber nicht, wenn Sie „sudo su“ oder „su -“ verwenden. Hier sind einige Testergebnisse:
-- funktioniert nicht
jsveiga@dell:~$ su Password: root@dell:/home/jsveiga# service smbd restart stop: Unknown job: smbd start: Unknown job: smbd
-- funktioniert sogar aus einer Su-Sitzung
root@dell:/home/jsveiga# sudo service smbd restart smbd stop/waiting smbd start/running, process 3823
-- funktioniert
root@dell:/home/jsveiga# exit jsveiga@dell:~$ sudo su root@dell:/home/jsveiga# service smbd restart smbd stop/waiting smbd start/running, process 3862
-- funktioniert
root@dell:/home/jsveiga# exit jsveiga@dell:~$ su - Password: root@dell:~# service smbd restart smbd stop/waiting smbd start/running, process 3905
-- mit su zu arbeiten und dann UPSTART_SESSION aufzuheben funktioniert
root@dell:/home/jsveiga# exit jsveiga@dell:~$ su Password: root@dell:/home/jsveiga# service smbd restart stop: Unknown job: smbd start: Unknown job: smbd root@dell:/home/jsveiga# unset UPSTART_SESSION root@dell:/home/jsveiga# service smbd restart smbd stop/waiting smbd start/running, process 4244
Daher schlagen die Start-/Stopp-Skripte allein aufgrund der Anwesenheit der
UPSTART_SESSION
Umgebungsvariable fehl.BR, Joao S Veiga
Um dies zu beheben, heben Sie einfach die Einstellung auf $UPSTART_SESSION
:
unset UPSTART_SESSION
oder wechseln Sie auf andere Weise zum Root-Benutzer, z. B. per su -
, sudo su
oder sudo -i
.
Antwort2
In diesem Kontext bedeutet es nichts und sollte entfernt werden. Ohne Angabe eines anderen Benutzers sudo
versucht es, Root zu werden. Wenn Sie also bereits Root sind, ist das ein No-Op, abgesehen davon, dass ein zusätzlicher Prozess (für sudo
sich selbst) erstellt wird, der einige Ressourcen belegt, bis der von ihm ausgeführte Befehl beendet ist.