Ich habe wirklich keine Ahnung. Es gibt eine Erwähnung von /etc/rc.shutdown.localin /System/Library/LaunchDaemons/com.apple.SystemStarter.plist, aber ich bin mir überhaupt nicht sicher, was es bedeutet. Die Handbuchseite für SystemStarterist 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.localbefindet sich auch in der SystemStarterBinä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, launchdwird der SIGTERM gesendet, der das Programm veranlasst, seine Sache zu tun. Natürlich muss es ziemlich schnell gehen, oder es launchdwird ein größerer Vorschlaghammer angewendet.
Hier ist meine launchctlPliste, benannt no.ntnu.math.hanche.quietboot.plistund 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.localin/System/Library/LaunchDaemons/com.apple.SystemStarter.plist, aber ich bin mir überhaupt nicht sicher, was es bedeutet. Die Handbuchseite fürSystemStarterist 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.localbefindet sich in derSystemStarterBinärdatei. Ich vermute, dass Dateien dort beim Herunterfahren ausgeführt werden.