Ich habe wirklich keine Ahnung. Es gibt eine Erwähnung von /etc/rc.shutdown.local
in /System/Library/LaunchDaemons/com.apple.SystemStarter.plist
, aber ich bin mir überhaupt nicht sicher, was es bedeutet. Die Handbuchseite für SystemStarter
ist keine große Hilfe, außer uns mitzuteilen, dass sie veraltet ist. Das Programm läuft jedoch auf meinem System. Oh, und die Zeichenfolge /etc/rc.shutdown.local
befindet sich auch in der SystemStarter
Binärdatei. Ich vermute, dass Dateien dort beim Herunterfahren ausgeführt werden.
Aber wenn ich Ihre implizite Frage beantworten darf, wie etwas beim Herunterfahren ausgeführt werden soll: Hier ist, was ich getan habe. Zuerst habe ich dieses kleine C-Programm geschrieben und kompiliert. Was es tut, ist einfach zu schlafen, bis es ein SIGTERM erhält, an welchem Punkt es seine Argumente ausführt:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <signal.h>
char **args;
void sigterm(int s) {
execvp(args[1],args+1);
fprintf(stderr, "%s: exec failed: ", args[0]);
perror(args[1]);
exit(1);
}
int main(int argc, char *argv[]) {
args=argv;
signal(SIGTERM,sigterm);
for (;;) sleep(0x7FFFFFFF);
}
Ich habe einen Start-Daemon eingerichtet, um dieses Programm beim Start auszuführen. Wenn die Zeit zum Herunterfahren gekommen ist, launchd
wird der SIGTERM gesendet, der das Programm veranlasst, seine Sache zu tun. Natürlich muss es ziemlich schnell gehen, oder es launchd
wird ein größerer Vorschlaghammer angewendet.
Hier ist meine launchctl
Pliste, benannt no.ntnu.math.hanche.quietboot.plist
und platziert in /Library/LaunchDaemons/
. Sein einziger Zweck ist es, `nvram SystemAdioVolume =% 01 'beim Herunterfahren auszuführen, damit ich ohne das Signal neu starten kann.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>no.ntnu.math.hanche.quietboot</string>
<key>ProgramArguments</key>
<array>
<string>/local/bin/atshutdown</string>
<string>/usr/sbin/nvram</string>
<string>SystemAudioVolume=%01</string>
</array>
<key>Disabled</key>
<false/>
<key>KeepAlive</key>
<false/>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
/etc/rc.shutdown.local
in/System/Library/LaunchDaemons/com.apple.SystemStarter.plist
, aber ich bin mir überhaupt nicht sicher, was es bedeutet. Die Handbuchseite fürSystemStarter
ist keine große Hilfe, außer uns mitzuteilen, dass sie veraltet ist. Das Programm läuft jedoch auf meinem System. Oh, und die Zeichenfolge/etc/rc.shutdown.local
befindet sich in derSystemStarter
Binärdatei. Ich vermute, dass Dateien dort beim Herunterfahren ausgeführt werden.