Sono rc.shutdown e rc.shutdown.local ancora utilizzabili su OS X Lion?

2

Vi sono ancora rc.shutdown o rc.shutdown.local ancora in uso in OS X o sono stati sostituiti con qualcos'altro?

Mi rendo conto che launchd sta sostituendo la maggior parte di questo, ma ho pensato che potresti ancora usare rc.shutdown.local per eseguire uno script.

Non riuscivo nemmeno a trovare rc.shutdown ovunque sul mio sistema.

    
posta rubixibuc 25.02.2012 - 10:37
fonte

1 risposta

2

Non ne ho idea, davvero. C'è una menzione di /etc/rc.shutdown.local in /System/Library/LaunchDaemons/com.apple.SystemStarter.plist , ma non sono affatto sicuro di cosa significhi. La pagina di manuale per SystemStarter non è di grande aiuto, oltre a informarci che è deprecata. Il programma è in esecuzione sul mio sistema, però. Oh, e la stringa /etc/rc.shutdown.local si trova anche nel SystemStarter binario. La mia ipotesi è che i file verranno eseguiti all'arresto.

Ma se posso rispondere alla tua domanda implicita su come eseguire qualcosa allo spegnimento: ecco cosa ho fatto. Innanzitutto, ho scritto e compilato questo piccolo programma C. Quello che fa è semplicemente dormire fino a quando non riceve un SIGTERM, a quel punto esegue i suoi argomenti:

#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);
}

Ho installato un demone di avvio per eseguire questo programma all'avvio. Arriva il tempo di spegnimento, launchd invierà il SIGTERM che fa sì che il programma faccia il suo esempio. Certo, deve farlo abbastanza velocemente, o launchd applicherà un mazza più grande.

Ecco il mio launchctl plist, chiamato no.ntnu.math.hanche.quietboot.plist e inserito in /Library/LaunchDaemons/ . Il suo unico scopo è eseguire 'nvram SystemAdioVolume =% 01' all'arresto, quindi posso riavviare senza il cicalino.

<?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>
    
risposta data 25.02.2012 - 11:30
fonte

Leggi altre domande sui tag