Certificat | LPIC-1 |
Examen: | 101 (torneu a la resta de temes) |
Fitxers: | LPI101.3_CanviarNivellsExecucio_aturar_sistema.pdf (LPI101.3_CanviarNivellsExecucio_aturar_sistema.odp) |
Objectius: | http://www.lpi.org/eng/certification/the_lpic_program/lpic_1/exam_101_detailed_objectives |
Dipòsit SVN: | https://svn.projectes.lafarga.cat/svn/lpi/Materials/Examen_101/101.3 |
Usuari: | anonymous |
Paraula de pas: | qualsevol paraula de pas |
101.3. Canviar els nivells d'execució i apagar o tornar a iniciar el sistema | |
---|---|
![]() |
|
![]() |
Àrees Clau de Coneixement:
|
![]() |
La següent és una llista parcial de fitxers, termes i utilitats utilitzades: |
![]() |
Apunts: LPI 101.3. Canviar els nivells d'execució i apagar o tornar a iniciar el sistema |
Consulteu nivells d'execució.
Consulteu l'article /etc/inittab.
Consulteu Configuració_de_serveis_en_Linux._Daemons#Establir_el_nivell_d.27execuci.C3.B3_per_defecte.
# dpkg -L upstart-compat-sysv /. /etc /etc/event.d /etc/event.d/rc-default /etc/event.d/rc0 /etc/event.d/rc1 /etc/event.d/rc2 /etc/event.d/rc3 /etc/event.d/rc4 /etc/event.d/rc5 /etc/event.d/rc6 /etc/event.d/rcS /etc/event.d/rcS-sulogin /usr /usr/share /usr/share/doc /usr/share/man /usr/share/man/man8 /usr/share/man/man8/shutdown.8.gz /usr/share/man/man8/telinit.8.gz /usr/share/man/man8/reboot.8.gz /usr/share/man/man8/runlevel.8.gz /sbin /sbin/reboot /sbin/runlevel /sbin/shutdown /sbin/telinit /usr/share/doc/upstart-compat-sysv /usr/share/man/man8/halt.8.gz /usr/share/man/man8/poweroff.8.gz /sbin/halt /sbin/poweroff
L'ordre init permet canviar el nivell d'execució. Per exemple per enviar el nostre sistema a una línia d'ordres monousuari (single-user-mode):
$ sudo init 1
Per exemple, per fer certes tasques amb LVM és imprescindible passar al nivell 1 tal i com s'explica a Modificar la mida de les LVM.
També podem aturar el sistema amb:
$ sudo init 0
Es pot obtenir el mateix resultat amb la comanda shutdown:
$ sudo shutdown now
O tornar a iniciar el sistema amb:
$ sudo init 6
Que és similar a l'ordre:
$ sudo reboot
En algunes distribucions (no a les distribucions de la família Debian, consulteu nivells d'execució), l'ordre:
$ sudo init 5
Inicia l'entorn de finestres X. Amb Gnome i Debian seria similar a executar el gestor de pantalla (display manager):
$ sudo /etc/init.d/gdm start
En força distribucions, init realment executa la comanda telinit. Per aquesta raó quan consulteu el manual d'init:
$ man init
Us apareix (segons els sistema) un manual de la secció 8 on s'explica el procés d'arrencada del sistema. Podeu consulta el manual d'init consultant l'ordre telinit]:
$ man telinit
Vegeu també:
Recursos:
En algunes distribucions com SUSE, telinit és un enllaç simbòlic a init.
Per exemple, les ordres:
$ telinit 0
i
$ init 0
són equivalents. telinit és manté per compatibilitat amb alguns sistemes Unix.
Permet consultar el nivell d'execució (runlevel) actual:
$ runlevel N 2
On N és el nivell d'execució previ (n vol dir none) i 2 és el nivell d'execució actual.
Obté la informació del fitxer:
/var/run/utmp
També podem utilitzar l'ordre who
$ who -r nivll exec 2 2009-11-30 06:01
Consulteu update-rc.d.
Només disponible en sistemes Red Hat. Consulteu ntsysv
Consulteu chkconfig
Consulteu service
Consulteu invoke-rc.d
NOTA: Les ordres que depenen de upstart i tot lo relacionat amb upstart no entra a l'examen LPI (--acacha 12:21, 13 des 2009 (UTC)). De fet és més, si apareix alguna opció que només sigui d'upstart la podeu considerar incorrecta
Aquesta ordre és una ordre de superusuari proporcionada pel paquet upstart a Debian/Ubuntu i Fedora:
$ whereis initctl initctl: /sbin/initctl /usr/share/man/man8/initctl.8.gz $ dpkg -S /sbin/initctl upstart: /sbin/initctl
Segons el manual:
$ man initctl
Serveix per controlar el procés init.
A una Ubuntu 9.10 tenim:
$ ls -l /etc/rcS.d/ total 4 -rw-r--r-- 1 root root 447 2009-09-07 20:58 README lrwxrwxrwx 1 root root 24 2009-12-22 11:31 S06keyboard-setup -> ../init.d/keyboard-setup lrwxrwxrwx 1 root root 21 2009-12-22 11:46 S13pcmciautils -> ../init.d/pcmciautils lrwxrwxrwx 1 root root 16 2009-12-22 11:46 S25brltty -> ../init.d/brltty lrwxrwxrwx 1 root root 18 2009-12-22 11:44 S37apparmor -> ../init.d/apparmor lrwxrwxrwx 1 root root 23 2009-12-22 11:31 S49console-setup -> ../init.d/console-setup lrwxrwxrwx 1 root root 17 2009-12-22 11:30 S55urandom -> ../init.d/urandom lrwxrwxrwx 1 root root 24 2009-12-22 11:44 S70screen-cleanup -> ../init.d/screen-cleanup lrwxrwxrwx 1 root root 20 2009-12-22 11:35 S70x11-common -> ../init.d/x11-common lrwxrwxrwx 1 root root 19 2009-12-23 07:53 S75policykit -> ../init.d/policykit
Conté els paràmetres per defecte dels guions de shell de la carpeta /etc/rcS.d/
$ cat /etc/default/rcS # # /etc/default/rcS # # Default settings for the scripts in /etc/rcS.d/ # # For information about these variables see the rcS(5) manual page. # # This file belongs to the "initscripts" package. TMPTIME=0 SULOGIN=no DELAYLOGIN=no UTC=yes VERBOSE=no FSCKFIX=no
IMPORTANT: A Debian/Ubuntu el fitxer és: /etc/rc.local
Aquest és l'últim fitxer en executar-se durant l'arrancada. S'executa un sol cop i es pot utilitzar per realitzar accions concretes durant l'arrancada.
Vegeu un exemple a:
Policy_Routing#Guardar_els_canvis_de_forma_permanent
TODO
/var/run/utmp
$ man utmp
La comanda principal és shutdown, i és la que permet aturar de forma segura el sistema. També existeixen les comandes:
Les comandes reboot, halt i poweroff comparteixen el mateix manual, és a dir, és el mateix executar qualsevol de les següents 3 comandes:
$ man reboot
$ man halt
$ man poweroff
A més segons el manual, totes 3 acaben invocant shutdown amb les opcions equivalents.
Ubuntu utilitza el sistema upstart en comptes del fitxer inittab. El paquet que proporciona les comandes de gestió de l'aturada del sistema és upstart-compat-sysv:
$ dpkg -L upstart-compat-sysv /. /etc /etc/event.d /etc/event.d/rc-default /etc/event.d/rc0 /etc/event.d/rc1 /etc/event.d/rc2 /etc/event.d/rc3 /etc/event.d/rc4 /etc/event.d/rc5 /etc/event.d/rc6 /etc/event.d/rcS /etc/event.d/rcS-sulogin /usr /usr/share /usr/share/doc /usr/share/man /usr/share/man/man8 /usr/share/man/man8/shutdown.8.gz /usr/share/man/man8/telinit.8.gz /usr/share/man/man8/reboot.8.gz /usr/share/man/man8/runlevel.8.gz /sbin /sbin/reboot /sbin/runlevel /sbin/shutdown /sbin/telinit /usr/share/doc/upstart-compat-sysv /usr/share/man/man8/halt.8.gz /usr/share/man/man8/poweroff.8.gz /sbin/halt /sbin/poweroff
NOTA: A Karmic (Ubuntu 9.10) les ordres són proporcionades directament pel paquet upstart
Upstart és compatible enrere amb SystemV, i precisament aquest és el paquet que ofereix aquesta compatibilitat.
A partir de la versió 9, Fedora també utilitza Upstart. Els paquet que proporciona les comandes és el paquet upstart:
$ rpm -ql upstart | grep bin /sbin/halt /sbin/init /sbin/initctl /sbin/logd /sbin/poweroff /sbin/reboot /sbin/runlevel /sbin/shutdown /sbin/start /sbin/status /sbin/stop /sbin/telinit
Consulteu Upstart a Fedora.
En sistemes com Fedora o Red Hat algunes comandes del sistema es poden executar per usuaris de no sistema amb consolehelper.
$ ls -la /usr/bin/reboot lrwxrwxrwx. 1 root root 13 4 jun 19:06 /usr/bin/reboot -> consolehelper
En altres sistemes com Ubuntu o Linkat (OpenSuse) els scripts com reboot es troben directament a /sbin.
Del manual:
CONSOLEHELPER(8) CONSOLEHELPER(8) NAME consolehelper - A wrapper that helps console users run system programs SYNOPSIS progname [ options ] DESCRIPTION consolehelper is a tool that makes it easy for console users to run system programs, doing authentication via PAM (which can be set up to trust all con- sole users or to ask for a password at the system administrator’s discretion). When possible, the authentication is done graphically; otherwise, it is done within the text console from which consolehelper was started. It is intended to be completely transparent. This means that the user will never run the consolehelper program directly. Instead, programs like /sbin/shutdown are paired with a link from /usr/bin/shutdown to /usr/bin/consolehelper. Then when non-root users (specifically, users without /sbin in their path, or /sbin after /usr/bin) call the "shutdown" program, consolehelper will be invoked to authenticate the action and then invoke /sbin/shut- down. (consolehelper itself has no priviledges; it calls the userhelper(8) program do the real work.) consolehelper requires that a PAM configuration for every managed program exist. So to make /sbin/foo or /usr/sbin/foo managed, you need to create a link from /usr/bin/foo to /usr/bin/consolehelper and create the file /etc/pam.d/foo, normally using the pam_console(8) PAM module. OPTIONS This program has no command line options of its own; it passes all command line options on to the program it is calling. SEE ALSO userhelper(8) BUGS No known bugs. Report any you find at http://developer.redhat.com/ at the BugTrack link. AUTHOR Michael K. Johnson <[email protected]> Red Hat Software 18 March 1999 CONSOLEHELPER(8)
Permet apagar el sistema de forma segura:
$ sudo shutdown
Segons el manual:
$ man shutdown
Permet aturar el sistema d'una forma segura.
NOTA: Cal tenir en compte que no totes les distribucions tenen exactament la mateixa comanda shutdown.
La sintaxi és:
# shutdown [-akrhHPfnc] [-t secs] time [warning message]
Es a dir es dona un temps als usuaris per acabar les seves tasques, i un cop acabada aquesta tasca s'envia el sistema al nivell d'execució que equival a màquina aturada (normalment el 0).
Es poden utilitzar les opcions:
Opcions que no apareixen al manual d'Ubuntu però existeixen:
La comanda shutdown utilitza wall per enviar missatges a la resta d'usuaris.
NOTA: En sistemes on la variable d'entorn PATH dels usuaris normals no inclogui la carpeta /sbin, si executeu:
$ shutdown -bash: shutdown: command not found
Cal que poseu tot el path
$ /sbin/shutdown
També cal tenir en compte que la comanada which només cerca a les carpetes que són al PATH i per tant tampoc u trobarà la comanda shutdown. Podeu utilitzar en comptes la comanda whereis o fins i tot comandes més avançades com locate.
Podeu consultar el manual de la comanda amb:
$ man shutdown
Cal tenir en compte que hi han dos versions d'aquesta comanda segons si els sistema utilitza upstart o no.
El manual del sistema per a sistemes que no utilitzen upstart (--acacha 11:13, 6 set 2009 (UTC)) com p. ex. Debian o Linkat el podeu trobar a:
http://linux.die.net/man/8/shutdown
És interessant la descripció:
NOTA: shutdown brings the system down in a secure way. All logged-in users are notified that the system is going down, and login(1) is blocked. It is possible to shut the system down immediately or after a specified delay. All processes are first notified that the system is going down by the signal SIGTERM . This gives programs like vi(1) the time to save the file being edited, mail and news processing programs a chance to exit cleanly, etc. shutdown does its job by signalling the init process, asking it to change the runlevel. Runlevel 0 is used to halt the system, runlevel 6 is used to reboot the system, and runlevel 1 is used to put to system into a state where administrative tasks can be performed; this is the default if neither the -h or -r flag is given to shutdown. To see which actions are taken on halt or reboot see the appropriate entries for these runlevels in the file /etc/inittab.
Per a les versions d'Ubuntu o altres que utilitzen upstart, consulteu:
http://manpages.ubuntu.com/manpages/intrepid/en/man8/shutdown.8.html
Recursos:
$ sudo shutdown -h 0
Fixeu-vos que és obligatori especificar el temps. Podem posar 0 o posar now. És la forma més segura d'apagar el sistema. Primer envia el sistema al nivell 0, és similar a la comanda:
$ sudo init 0
I després atura el sistema.
Reiniciar a una hora concreta i enviar un missatge als usuaris:
$ sudo shutdown -r 14:45 "Feu una còpia de seguretat. El sistema s'apagarà a les 14:45"
Sinó indiquem cap missatge se n'indica un per defecte.
Atura el sistema operatiu però no apaga la màquina:
$ sudo shutdown -hH now
Consulteu:
Configuració_de_serveis_en_Linux._Daemons#halt_equival_a_aturar_sense_apagar_la_electricitat
El que fa shutdown és modificar el nivell d'execució. La opció per defecte es anar al nivell d'execució 1 (single user mode). Amb:
$ sudo shutdown 0
Passem al single user mode (nivell 1). També podem entrar en aquest mode amb:
$ sudo init 1
L'opció -h envia al nivell d'aturada (nivell 0) i l'opció -r envia al nivell 6, tornar a iniciar el sistema.
Del manual en castellà:
Esto provoca que quien tenga acceso físico a la consola pueda cerrar el sistema. Para prevenir esto, shutdown puede comprobar si algún usuario autorizado esta conectado en alguna consola virtual. Si shutdown es lla‐ mado desde init(8), comprobará si el archivo /etc/shutdown.allow existe. Comparará los nombres en este fichero con la lista de gente conectada en consolas virtuales (desde /var/run/utmp). Solo si uno de estos usuarios autorizados o el root está conectado, procederá. Si no es así imprimirá el mensaje shutdown: no authorized users logged in
Es a dir, es pot utilitzar aquest fitxer per indicar quins usuaris han d'estar dins del sistema i a una consola virtual per tal de poder aturar el sistema.
Per utilitzar aquest fitxer cal fer servir l'opció -a:
$ sudo shutdown -a
Es pot utilitzar per fer una comprovació de disc durant el reboot de la màquina:
$ sudo shutdown -Fr now
Consulteu fsck
El paquet molly-guard és una eina força interessant, ja que impedeix cometre l'error d'apagar una màquina remota. Consulteu l'artícle molly-guard.
Consulteu wall.
Aquestes tres comandes no fan el mateix però tenen el mateix manual i les mateixes opcions. Segons el manual de qualsevol d'elles:
$ man halt NAME reboot, halt, poweroff - reboot or stop the system ...
Les opcions són:
S'utilitza igual que halt però per defecte fa un reboot del sistema. Es necessiten permisos de superusuari:
$ sudo reboot
Segons el manual, sense la opció -f invoca a la comanda shutdown. Equival a:
$ sudo shutdown -r now
Diferències entre distribucions:
Com podeu veure en els següents exemples, algunes distribucions consideren la comanda reboot una comanda d'usuari (/usr/bin) i altres de superusuari (sbin), i a més a vegades és un link a un altre comanda o en el cas de Fedora/Red Hat s'utilitza consolehelper
Fedora:
Utilitza consolehelper:
$ which reboot /usr/bin/reboot $ ls -la /usr/bin/reboot lrwxrwxrwx. 1 root root 13 4 jun 19:06 /usr/bin/reboot -> consolehelper
Linkat:
És un link a halt
$ whereis reboot reboot: /sbin/reboot /usr/share/man/man8/reboot.8.gz /usr/share/man/man2/reboot.2.gz $ ls -la /sbin/reboot lrwxrwxrwx 1 root root 4 1 set 16:42 /sbin/reboot -> halt
Ubuntu:
$ which reboot /sbin/reboot $ ls -la /sbin/reboot -rwxr-xr-x 1 root root 42704 2008-09-30 01:52 /sbin/reboot
Recursos:
La diferència entre halt i poweroff és que halt atura el sistema operatiu però no apaga l'ordinador en canvi powerwoff si que apaga l'ordinador. En sistemes antics, si s'executava un halt, un cop s'acabava la seva execució s'havia d'apagar la màquina mitjançant algun botó de l'ordinador.
Actualment la majoria de sistemes, també aturen l'ordinador al fer un halt, però tot depèn de diferents factors com per exemple la configuració de la BIOS.
La comanda halt atura el sistema:
$ sudo halt
Segons el manual, sinó s'utilitza la opció -f, halt invoca la comanda shutdown. Equival a:
$ sudo shutdown -h now
Diferències entre distribucions:
Fedora:
Utilitza consolehelper:
$ which halt /usr/bin/halt $ ls -la /usr/bin/halt lrwxrwxrwx. 1 root root 13 4 jun 19:06 /usr/bin/halt -> consolehelper
Linkat:
$ whereis halt halt: /sbin/halt /usr/share/man/man8/halt.8.gz $ ls -la /sbin/halt -rwxr-xr-x 1 root root 14024 18 mar 00:29 /sbin/halt
Ubuntu:
És un link a reboot:
$ which halt /sbin/halt $ ls -la /sbin/halt lrwxrwxrwx 1 root root 6 2009-04-26 10:42 /sbin/halt -> reboot
$ which reboot /sbin/reboot $ ls -la /sbin/reboot -rwxr-xr-x 1 root root 42704 2008-09-30 01:52 /sbin/reboot
Debian:
Recursos:
Recursos:
S'utilitza igual que halt però per defecte fa un poweroff (-f) del sistema. Es necessiten permisos de superusuari:
$ sudo poweroff
Segons el manual invoca la comanda shutdown.
Diferències entre distribucions:
Fedora:
Utilitza consolehelper:
$ which poweroff /usr/bin/poweroff $ ls -la /usr/bin/poweroff lrwxrwxrwx. 1 root root 13 4 jun 19:06 /usr/bin/poweroff -> consolehelper
Linkat:
És un link a halt:
$ whereis poweroff poweroff: /sbin/poweroff /usr/share/man/man8/poweroff.8.gz $ ls -la /sbin/poweroff lrwxrwxrwx 1 root root 4 1 set 16:42 /sbin/poweroff -> halt
Ubuntu:
És un link a reboot:
$ which poweroff /sbin/poweroff $ ls -la /sbin/poweroff lrwxrwxrwx 1 root root 6 2009-04-26 10:42 /sbin/poweroff -> reboot
Debian:
Recursos:
Consulteu GDM#Configuraci.C3.B3_de_les_opcions_d.27aturada_del_sistema.
Consulteu:
Gnome#polkit-gnome-authorization
Consulteu la combinació de tecles REISUB.
Tal com diu la descripció:
$ dpkg -l pm-utils Desitjat=desconegUt/Instal·la/SupRimeix/Purga/Retín(h) | Estat=Not/Installed/Config-files/Unpacked/Failed-config/Half-installed |/ Err?=(none)/Hold/Reinst-required/X=both-problems (Estat,Err: majúsc.=dolent) ||/ Nom Versió Descripció +++-======================================-======================================-============================================================================================ ii pm-utils 1.2.2.4-0ubuntu4 utilities and scripts for power management
Aquest paquet proporciona utilitats per a la gestió de l'energia.
Comandes:
$ dpkg -L pm-utils | grep bin /usr/lib/pm-utils/bin /usr/lib/pm-utils/bin/pm-action /usr/bin /usr/bin/pm-is-supported /usr/sbin /usr/sbin/pm-powersave /usr/sbin/pm-suspend /usr/sbin/pm-hibernate /usr/sbin/pm-suspend-hybrid
L'ordre a utilitzar
/usr/sbin/pm-suspend
/usr/sbin/pm-hibernate