Ich richte ein Kontingent auf meinem Linode-Server ein, auf dem Ubuntu 16.10 ausgeführt wird, und es wird die folgende Fehlermeldung angezeigt
Kann nicht stat () eingehängtes Gerät / dev / root: Keine solche Datei oder Verzeichnis
Um dies zu beheben, habe ich diesen Thread für die Korrektur erreicht, die durch Hinzufügen erfolgt
ln -s /dev/xvda /dev/root
/etc/init.d/quota restart
zum /etc/rc.local
. Ubuntu 16.10 verwendet jedoch nicht rc.local
mehr stattdessen systemd . Wofür ist die Alternative rc.local
? Wie kann ich die obigen Befehle beim Start ausführen?
Außerdem habe ich den Dienst über aktiviert, systemctl enable rc-local.service
aber es hat bei mir nicht funktioniert. Jeder Hinweis wäre willkommen.
Antworten:
Intro
Ich denke, Sie sollten keinen neuen Dienst erstellen, wie in dem Link von George vorgeschlagen. Das ist
rc-local.service
bereits in systemd vorhanden, und die Servicedatei schlägt vor, dass das automatischrc.local
abgerufen wird, sofern es vorhanden und ausführbar ist . Es ist also nicht erforderlich, etwas neu zu erstellen oder zu erzwingen, das nur auf eine andere Weise von der .multi-user.target
systemd-rc-local-generator
Eine Lösung
Eine schnelle Umgehung (ich weiß nicht, ob das der kanonische Weg ist):
In einem Terminal machen Sie:
Danach
rc.local
wird beim Systemstart der aufgerufen. Fügen Sie ein, was Sie wollen.Hintergrund
Wenn Sie in einem Terminal tun:
Sie können sehen, dass der Kopfkommentar folgende Zeilen enthält:
Dies zeigt an, dass in diesem System, wenn eine Datei aufgerufen wird,
/etc/rc.local
die ausführbar ist, diese automatisch in multi-user.target abgerufen wird. Sie erstellen also einfach die entsprechende Datei (sudo touch...
) und machen sie ausführbar (sudo chmod +x ...
).quelle
#!/bin/bash
, es#!/bin/sh
sei denn, Sie benötigen Bash in Ihrem Skript. Alle anderen Systemskripte verwenden aus Leistungsgründen Bindestrich und nicht Bash.rc-local
erledigt wird ", erlaubt es nicht, es nach einer anderen Einheit zu bestellen, nicht wahr?Ich sah diese Lösung vorgeschlagen, die Verwendung von
systemd
hier beinhaltet :Erstellen Sie einen Service:
Fügen Sie dort Ihren Code hinzu:
Erstellen Sie einen
/etc/rc.local
ausführbaren Code, stellen Sie sicher, dass er ausführbar ist, und fügen Sie den folgenden Code hinzu:Aktivieren Sie den Dienst:
Service starten und Status prüfen:
Wenn alles gut geht, können Sie Ihre
code
zu der/etc/rc.local
Datei hinzufügen und neu starten.Hinweis: Getestet auf Lubuntu 16.10.
Quelle:
https://www.linuxbabe.com/linux-server/how-to-enable-etcrc-local-with-systemd
quelle
touch "hello"
vor derexit 0
. Der Service scheint aktiv zu sein , aber es schafft keine Datei im Verzeichnis / etc / dir Laufen auf ubuntu 16.04 Arabian 5,31Um der Antwort von Jan hinzuzufügen , wird diese im Gegensatz zur üblichen
rc.local
Dateirc-local service
nicht ausgeführt, nachdem alle Dienste gestartet wurden, sondern nachdem das Netzwerk online gegangen ist.In einigen Fällen möchten Sie möglicherweise Befehle
rc.local
später ausführen . Ich wollte zum Beispiel, dass es nach demlxd
Start ausgeführt wird.In diesem Fall können Sie
rc-local service
Startabhängigkeiten bearbeiten, indem Sie eine Drop-In-Conf-Datei erstellen:/etc/systemd/system/rc-local.service.d/override.conf
mit Inhalt:Wo können Sie einen benötigten Einheitennamen hinzufügen (wie ich hinzugefügt habe
lxd.service
)Vergiss danach nicht
systemctl daemon-reload
.quelle