De la shutdown
el hombre de la página:
Upon shutdown, all running processes are sent a SIGTERM followed by a
SIGKILL. The SIGKILL will follow the SIGTERM by an intentionally inde-
terminate period of time. Programs are expected to take only enough time
to flush all dirty data and exit. Developers are encouraged to file a
bug with the OS vendor, should they encounter an issue with this func-
tionality.
Así que por lo que yo entiendo, los procesos pueden ser eliminados antes de que se han limpiado correctamente.
De la launchctl
el hombre de la página:
reboot [system|userspace|halt|logout|apps|reroot <mount-point>]
Instructs launchd to begin tearing down userspace. With no argu-
ment given or with the system argument given, launchd will make
the reboot(2) system call when userspace has been completely
torn down. With the halt argument given, launchd will make the
reboot(2) system call when userspace has been completely torn
down and pass the RB_HALT flag, halting the system and not ini-
tiating a reboot.
Esto es lo que creo que apagar a través del menú no, es mejor, ya que se asegura de que todos los userland procesos salió limpiamente antes de parar/reiniciar el sistema.
Yo estaría tentado a decir que el launchctl
método es el mejor, y el shutdown -h now
método podría posiblemente resultar en algunas rarezas debe a un proceso de ser asesinado antes de limpiar correctamente a sí mismo.