IMPORTANT: Per accedir als fitxer de subversion: http://acacha.org/svn (sense password). Poc a poc s'aniran migrant els enllaços. Encara però funciona el subversion de la farga però no se sap fins quan... (usuari: prova i la paraula de pas 123456)
LPI 101.3. Canviar el nivell d'execució i aturar o tornar a iniciar el sistema
| 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 |
Objectius del tema
| 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: | |
| Fitxer:Text-editor.svg |
Apunts: LPI 101.3. Canviar els nivells d'execució i apagar o tornar a iniciar el sistema |
Nivells d'execució
Consulteu nivells d'execució.
Control de serveis. Scripts d'inicialització (/etc/init.d)
Configuració del procés init. inittab
Consulteu l'article /etc/inittab.
Establir el nivell d'execució per defecte
Consulteu Configuració_de_serveis_en_Linux._Daemons#Establir_el_nivell_d.27execuci.C3.B3_per_defecte.
Upstart. Ubuntu
# 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
Ordres
Gestió dels nivells d'execució
init. Canviant els nivells d'execució
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:
- man init
- A la wikipedia, a l'article RunLevel podeu trobar els diferents nivells d'execució de les diferents distribucions Linux.
- man telinit
telinit
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.
runlevel
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
update-rc.d
Consulteu update-rc.d.
ntsysv
Només disponible en sistemes Red Hat. Consulteu ntsysv
chkconfig
Consulteu chkconfig
service
Consulteu service
invoke-rc.d
Consulteu invoke-rc.d
initctl
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.
Fitxers de configuració
/etc/rcS.d/
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
/etc/default/rcS
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
/etc/rc.d/rc.local
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
utmp
TODO
/var/run/utmp
$ man utmp
Gestió de l'aturada del sistema
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.
Paquets Ubuntu
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.
Paquets Fedora
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.
Console-helper
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 <johnsonm@redhat.com>
Red Hat Software 18 March 1999 CONSOLEHELPER(8)
shutdown
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:
- -r: Un cop apagat el sistema es torna a iniciar. És similar a la comanda reboot, i de fet reboot (sense la opció -f) invoca shutdown amb aquesta opció.
- -h: Li demana al sistema que executi un halt o un powerwoff, la opció la escull el sistema.
- -H: És un modificador de l'opció halt (-h). En aquells sistemes que ho suporten, no apaga la electricitat del sistema (power off) sinó que passa al monitor del boot.
- -P: És un modificador de l'opció halt (-h). Executa un poweroff.
- -c: cancel·la un shutdown pendent d'execució.
- -k: Només envia els missatges d'avís i impedeix fer login. El sistema no s'atura realment.
Opcions que no apareixen al manual d'Ubuntu però existeixen:
- -a: Utilitza el /etc/shutdown.allow.
- -f: tornar a iniciar el sistema de forma ràpida (no executa fsck).
- -F: Força un fsck al tornar a iniciar la màquina.
- -t n: l'indica al procés init que ha d'esperar n segons entre l'enviament de les senyals warning i kill, abans de canviar de nivell d'execució.
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:
Apagar immediatament
$ 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.
Aturar només el sistema operatiu
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
Entrar al single user mode
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.
/etc/shutdown.allow
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
Forçar fsck
Es pot utilitzar per fer una comprovació de disc durant el reboot de la màquina:
$ sudo shutdown -Fr now
Consulteu fsck
molly-guard
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.
wall
Consulteu wall.
Opcions comunes de les comandes reboot, halt i poweroff
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:
- -f: No invoca shutdown(8)
- -n: No executa sync(2) abans de l'aturada; això pot resultar en una pèrdua de dades. A Linux no té efecte per què el kernel va un flush de tots els buffers d'escriptura abans d'aturar la màquina.
- -h: Busca tots els discos IDE i els demana entrar en standby abans d'atura el sistema. A Linux no és necessari per què el kernel ja ho fa abans d'aturar la màquina.
- -i: Itera les interfícies de xarxa per tal d'aturar-les totes abans de finalitzar la execució. A Linux no és necessari per què el kernel ja ho fa abans d'aturar la màquina.
- -p: Amb la comanda halt, provoca que halt es comporti com poweroff.
reboot
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:
halt
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:
poweroff
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:
Aturada del sistema des de l'entorn gràfic (GNOME)
Consulteu GDM#Configuraci.C3.B3_de_les_opcions_d.27aturada_del_sistema.
Control dels permisos per aturar el sistema des de Gnome
Consulteu:
Gnome#polkit-gnome-authorization
Tornar a iniciar de forma gentil el kernel de Linux
Consulteu la combinació de tecles REISUB.
Informació addicional
Paquet pm-utils
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
Suspendre el sistema
L'ordre a utilitzar
/usr/sbin/pm-suspend
Hibernar el sistema
/usr/sbin/pm-hibernate

