Diferencia entre revisiones de «Exercicis resolts del shell de Linux»
Sin resumen de edición |
Sin resumen de edición |
||
(No se muestran 23 ediciones intermedias del mismo usuario) | |||
Línea 12: | Línea 12: | ||
$ ls ../ | $ ls ../ | ||
</syntaxhighlight> | </syntaxhighlight> | ||
}} | |||
Si execute '''ls''' sense arguments, de quin directori fa el llistat?: | |||
{{res| | |||
Del directori actiu de la terminal, el que estem en aquest moment. | |||
}} | }} | ||
Mostrar el directori actual: | Mostrar el directori actual: | ||
Línea 41: | Línea 45: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
}} | }} | ||
Fer que un arxiu tinga com a propietari i grup l'usuari i el grup root: | |||
{{res| | |||
<syntaxhighlight lang="bash"> | |||
$ chown root:root arxiu.txt | |||
</syntaxhighlight> | |||
}} | |||
Crear un enllaç de l'arxiu /var/log/syslog al meu home: | |||
{{res| | |||
<syntaxhighlight lang="bash"> | |||
$ ln -s /var/log/syslog ~/ | |||
</syntaxhighlight> | |||
Hem creat un enllaç simbòlic amb -s. | |||
}} | |||
Averiguar la quantitat de disc utilitzada: | |||
{{res| | |||
<syntaxhighlight lang="bash"> | |||
$ df -h | |||
</syntaxhighlight> | |||
}} | |||
Averiguar la quantitat de disc utilitzada en total pel directori home: | |||
{{res| | |||
<syntaxhighlight lang="bash"> | |||
$ sudo du -sh /home | |||
</syntaxhighlight> | |||
}} | |||
Donar permís d'execució per a l'usuari a un script: | |||
{{res| | |||
<syntaxhighlight lang="bash"> | |||
$ chmod u+x script.sh | |||
$ chmod 744 script.sh | |||
</syntaxhighlight> | |||
}} | |||
Moure tots els fitxers que tinguen extensió txt del directori /home/ubuntu a directori personal: | |||
{{res| | |||
<syntaxhighlight lang="bash"> | |||
$ mv /home/ubuntu/*.txt ~/ | |||
</syntaxhighlight> | |||
}} | |||
Trobar tots els arixus en el teu directori personal majors que 500MB: | |||
{{res| | |||
<syntaxhighlight lang="bash"> | |||
$ find -size +500M | |||
</syntaxhighlight> | |||
}} | |||
Trobar tots els arixus modificats en els últims dos dies en /etc: | |||
{{res| | |||
<syntaxhighlight lang="bash"> | |||
$ sudo find /etc -mtime -1 -ls | |||
</syntaxhighlight> | |||
}} | |||
Mostrar un llistat de tots els directoris (no arxius) que té el directori /tmp: | |||
{{res| | |||
<syntaxhighlight lang="bash"> | |||
$ ls -ad **/ | |||
</syntaxhighlight> | |||
El ** és una utilitat de bash per a recorrer recursivament els subdirectoris. | |||
}} | |||
Mostrar un llistat de tots els arixus del sistema amb extensió .jpg: | |||
{{res| | |||
<syntaxhighlight lang="bash"> | |||
$ sudo find / -name '.*\.jpg' | |||
</syntaxhighlight> | |||
Ho fem en sudo per poder entrar en quasi tots els directoris. | |||
}} | |||
Mostrar un llistat de tots els arxius que, efectivament, siguen imatges jpg: | |||
{{res| | |||
<syntaxhighlight lang="bash"> | |||
$ find / -type f -exec file --mime-type {} \; | grep 'image/jpeg' | |||
</syntaxhighlight> | |||
A tots els arxius del sistema els executa un file --mime-type per veure el seu tipus i filtra els que són jpeg | |||
}} | |||
Fer una còpia de seguretat mantinguent permissos de tot els /home: | |||
{{res| | |||
<syntaxhighlight lang="bash"> | |||
$ sudo cp -a /home /backup | |||
</syntaxhighlight> | |||
}} | |||
Fer una còpia de seguretat '''incremental''' mantinguent permissos de tot els /home: | |||
{{res| | |||
<syntaxhighlight lang="bash"> | |||
$ rsync -ravzX --delete /home /backup/ | |||
</syntaxhighlight> | |||
-r : recursiu | |||
-a : igual a: | |||
-r | |||
-l – copiar enllaços simbòlics | |||
-p – preservar permisos | |||
-t – preservar temps de modificació | |||
-g – preservar group | |||
-o – preservar owner | |||
-D – preservar arxius de sistema | |||
-v – ''verbosity'', que diu més coses | |||
-z – Comprimir | |||
-X – Preservar atributs estesos | |||
-A – Preservar ACL | |||
-S – handle sparse files efficiently | |||
--delete – Si l'axius és esborrat, s'esborra en destí. | |||
}} | |||
Fes la següent estructura de directoris en un sol comandament: | |||
/home | |||
|-- clase | |||
|-- alumno1 | |||
|-- alumno2 | |||
|-- linux | |||
|-- windows | |||
{{res| | |||
<syntaxhighlight lang="bash"> | |||
$ mkdir -p clase/alumno clase/alumno2/linux clase/alumno2/windows | |||
</syntaxhighlight> | |||
}} | |||
Explica el següent comandament: | |||
chmod g+w `ls -l > /home/listado` /home/listado | |||
{{res| | |||
Dona permís de escriptura als arxius i directoris dins de /home/listado i al propi directori per al grup propietari. | |||
}} | |||
Visualitzar el contingut de tots els arxius de dins dels directori /etc/ que comencen per 'a' i tenen d'extensió '.conf' | |||
{{res| | |||
<syntaxhighlight lang="bash"> | |||
$ cat /etc/a*.conf | |||
</syntaxhighlight> | |||
}} | |||
Veure el tipus d'arxius que són els que comencen per 'b' del teu directori personal demanant permís per a cadascun: | |||
{{res| | |||
<syntaxhighlight lang="bash"> | |||
$ find $HOME -name "b*" -ok file {} \; | |||
</syntaxhighlight> | |||
}} | |||
Crear un fitxer amb el llistat del directori /etc ordenat i mostrar-lo per pantalla pausant l'eixida. | |||
{{res| | |||
<syntaxhighlight lang="bash"> | |||
$ ls /etc | sort > listado.txt && less listado.txt | |||
</syntaxhighlight> | |||
}} | |||
== Usuaris == | == Usuaris == | ||
Línea 47: | Línea 187: | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
$ su usuari | $ su usuari | ||
</syntaxhighlight> | |||
}} | |||
Saber quin usuari estem utilitzant: | |||
{{res| | |||
<syntaxhighlight lang="bash"> | |||
$ whoami | |||
</syntaxhighlight> | |||
}} | |||
Detectar usuaris connectats al sistema: | |||
{{res| | |||
<syntaxhighlight lang="bash"> | |||
$ who | |||
</syntaxhighlight> | |||
}} | |||
Mostrar el grups al que pertany l'usuari lliurex: | |||
{{res| | |||
<syntaxhighlight lang="bash"> | |||
$ id lliurex | |||
</syntaxhighlight> | |||
}} | |||
Crear l'usuari '''platon''' que pertany al grup '''idealistes''', amb directori personal i bash en un comandament: | |||
{{res| | |||
<syntaxhighlight lang="bash"> | |||
$ useradd -m -G idealistes -s /bin/bash platon | |||
</syntaxhighlight> | |||
}} | |||
Mostrar tots els grups del sistema en orden alfabètic: | |||
{{res| | |||
<syntaxhighlight lang="bash"> | |||
$ cat /etc/group | cut -d":" -f1 | sort | |||
</syntaxhighlight> | </syntaxhighlight> | ||
}} | }} | ||
== Processos == | == Processos i programes == | ||
Llistar els processos en execució: | Llistar els processos en execució: | ||
Línea 58: | Línea 228: | ||
$ ps aux | $ ps aux | ||
</syntaxhighlight> | </syntaxhighlight> | ||
}} | |||
Mostrar l'ús de memòria: | |||
{{res| | |||
<syntaxhighlight lang="bash"> | |||
$ free | |||
</syntaxhighlight> | |||
Hi ha moltes ferramentes que donen informació de l'ús de la memòria. Free és la més coneguda i concreta, però en top, htop i altres també trobem aquesta informació. | |||
}} | |||
Reiniciar el sistema: | |||
{{res| | |||
<syntaxhighlight lang="bash"> | |||
$ sudo reboot | |||
</syntaxhighlight> | |||
Hi ha moltes ferramentes que donen informació de l'ús de la memòria. Free és la més coneguda i concreta, però en top, htop i altres també trobem aquesta informació. | |||
}} | |||
Matar un procés: | |||
{{res| | |||
<syntaxhighlight lang="bash"> | |||
$ ps -e # Per averiguar el PID | |||
$ kill <PID> | |||
$ kill -9 <PID> # Forçar la mort | |||
</syntaxhighlight> | |||
}} | |||
Executar en segón planol un procés: | |||
{{res| | |||
<syntaxhighlight lang="bash"> | |||
$ htop & | |||
</syntaxhighlight> | |||
}} | |||
Tornar del segón planol a la terminal un procés: | |||
{{res| | |||
<syntaxhighlight lang="bash"> | |||
$ fg | |||
</syntaxhighlight> | |||
}} | |||
Buscar la ubicació d'un programa: | |||
{{res| | |||
<syntaxhighlight lang="bash"> | |||
$ whereis nano | |||
</syntaxhighlight> | |||
}} | |||
Mostrar la data en format DD/MM/AAAA HH:MM: | |||
{{res| | |||
<syntaxhighlight lang="bash"> | |||
$ date +"%d/%m/%Y %H:%M" | |||
</syntaxhighlight> | |||
}} | |||
Consultar l'historial de comandaments: | |||
{{res| | |||
<syntaxhighlight lang="bash"> | |||
$ history | |||
</syntaxhighlight> | |||
}} | |||
Mostrar el '''PATH''' dels executables de Libreoffice: | |||
{{res| | |||
<syntaxhighlight lang="bash"> | |||
$ whereis libreoffice | |||
</syntaxhighlight> | |||
}} | |||
Crear un fitxer amb permisos de lectura i escriptura per al usuari, de lectura per al grup i res per als altres que continga tots els alies del sistema: | |||
{{res| | |||
<syntaxhighlight lang="bash"> | |||
$ (umask 026; alias > alias.txt) | |||
</syntaxhighlight> | |||
Anem a analitzar aquest comandament. Primer configurem el umask per a que mai tinga altres permisos el fitxer. Després s'executa el comandament alias que redirecciona l'eixida estàndar a alias.txt. Però tot això es fa dins de () per a fer-lo en un bash diferent i no conservar els umask. | |||
}} | |||
Crear un fitxer anomenat events.txt amb les primeres 50 línies que s'ha generat al arrencar en sistema i les últimes 50. Cal escriure títols que indiquen si són les primeres i on comencen les últimes: | |||
{{res| | |||
<syntaxhighlight lang="bash"> | |||
$ dmesg | (echo "Primeres línies: " && head -50 && echo "Últimes línies:" && tail -50) | |||
</syntaxhighlight> | |||
El resultat de dmesg s'envia a l'entrada estàndard de tots els programes que es fiquen entre parèntesis. El head i tail mostren les línies i el echo no fa cas i mostra el que li pases com a paràmetres. | |||
}} | }} | ||
Línea 71: | Línea 314: | ||
El comandament recomanable és el de ip, ja que forma part d'un paquet nou de ferramentes per substituir el ifconfig, considerat obsolet. | El comandament recomanable és el de ip, ja que forma part d'un paquet nou de ferramentes per substituir el ifconfig, considerat obsolet. | ||
}} | |||
Reiniciar una targeta de xarxa eth0: | |||
{{res| | |||
<syntaxhighlight lang="bash"> | |||
$ sudo ifdown eth0 | |||
$ sudo ifup eth0 | |||
$ /etc/init.d/networking restart # En debian no funciona correctament | |||
</syntaxhighlight> | |||
}} | |||
== Monitorització == | |||
Traure la memòria RAM lliure: | |||
{{res| | |||
<syntaxhighlight lang="bash"> | |||
$ free -h | grep 'Mem:' | awk '{print $4}' | |||
</syntaxhighlight> | |||
}} | }} |
Revisión actual - 15:58 3 mar 2017
Arxius
Visualitzar els arxius i permisos del directori actiu:
$ ls -l
Visualitzar els arxius del directori pare del que estem actualment:
$ ls ../
Si execute ls sense arguments, de quin directori fa el llistat?:
Del directori actiu de la terminal, el que estem en aquest moment.
Mostrar el directori actual:
$ pwd
$ echo $PWD
Crear dos directoris, un dins de l'altre:
$ mkdir -p dir1/dir2
Llistar els executables del sistema:
$ ls /bin/ /sbin/ /usr/bin/ /usr/sbin/
$ ls ${PATH//:/ }
En el segon cas, utilitzem la variable PATH, que conté les rutes dels programes i una sustitució de caracters en la variable.
Llistar totes les particions de discs SATA:
$ ls /dev/sd*
$ sudo fdisk -l
Fer que un arxiu tinga com a propietari i grup l'usuari i el grup root:
$ chown root:root arxiu.txt
Crear un enllaç de l'arxiu /var/log/syslog al meu home:
$ ln -s /var/log/syslog ~/
Hem creat un enllaç simbòlic amb -s.
Averiguar la quantitat de disc utilitzada:
$ df -h
Averiguar la quantitat de disc utilitzada en total pel directori home:
$ sudo du -sh /home
Donar permís d'execució per a l'usuari a un script:
$ chmod u+x script.sh
$ chmod 744 script.sh
Moure tots els fitxers que tinguen extensió txt del directori /home/ubuntu a directori personal:
$ mv /home/ubuntu/*.txt ~/
Trobar tots els arixus en el teu directori personal majors que 500MB:
$ find -size +500M
Trobar tots els arixus modificats en els últims dos dies en /etc:
$ sudo find /etc -mtime -1 -ls
Mostrar un llistat de tots els directoris (no arxius) que té el directori /tmp:
$ ls -ad **/
El ** és una utilitat de bash per a recorrer recursivament els subdirectoris.
Mostrar un llistat de tots els arixus del sistema amb extensió .jpg:
$ sudo find / -name '.*\.jpg'
Ho fem en sudo per poder entrar en quasi tots els directoris.
Mostrar un llistat de tots els arxius que, efectivament, siguen imatges jpg:
$ find / -type f -exec file --mime-type {} \; | grep 'image/jpeg'
A tots els arxius del sistema els executa un file --mime-type per veure el seu tipus i filtra els que són jpeg
Fer una còpia de seguretat mantinguent permissos de tot els /home:
$ sudo cp -a /home /backup
Fer una còpia de seguretat incremental mantinguent permissos de tot els /home:
$ rsync -ravzX --delete /home /backup/
-r : recursiu -a : igual a: -r -l – copiar enllaços simbòlics -p – preservar permisos -t – preservar temps de modificació -g – preservar group -o – preservar owner -D – preservar arxius de sistema -v – verbosity, que diu més coses -z – Comprimir -X – Preservar atributs estesos -A – Preservar ACL -S – handle sparse files efficiently --delete – Si l'axius és esborrat, s'esborra en destí.
Fes la següent estructura de directoris en un sol comandament:
/home |-- clase |-- alumno1 |-- alumno2 |-- linux |-- windows
$ mkdir -p clase/alumno clase/alumno2/linux clase/alumno2/windows
Explica el següent comandament:
chmod g+w `ls -l > /home/listado` /home/listado
Dona permís de escriptura als arxius i directoris dins de /home/listado i al propi directori per al grup propietari.
Visualitzar el contingut de tots els arxius de dins dels directori /etc/ que comencen per 'a' i tenen d'extensió '.conf'
$ cat /etc/a*.conf
Veure el tipus d'arxius que són els que comencen per 'b' del teu directori personal demanant permís per a cadascun:
$ find $HOME -name "b*" -ok file {} \;
Crear un fitxer amb el llistat del directori /etc ordenat i mostrar-lo per pantalla pausant l'eixida.
$ ls /etc | sort > listado.txt && less listado.txt
Usuaris
Iniciar sessió en un altre usuari en la meua terminal:
$ su usuari
Saber quin usuari estem utilitzant:
$ whoami
Detectar usuaris connectats al sistema:
$ who
Mostrar el grups al que pertany l'usuari lliurex:
$ id lliurex
Crear l'usuari platon que pertany al grup idealistes, amb directori personal i bash en un comandament:
$ useradd -m -G idealistes -s /bin/bash platon
Mostrar tots els grups del sistema en orden alfabètic:
$ cat /etc/group | cut -d":" -f1 | sort
Processos i programes
Llistar els processos en execució:
$ ps -e
$ ps aux
Mostrar l'ús de memòria:
$ free
Hi ha moltes ferramentes que donen informació de l'ús de la memòria. Free és la més coneguda i concreta, però en top, htop i altres també trobem aquesta informació.
Reiniciar el sistema:
$ sudo reboot
Hi ha moltes ferramentes que donen informació de l'ús de la memòria. Free és la més coneguda i concreta, però en top, htop i altres també trobem aquesta informació.
Matar un procés:
$ ps -e # Per averiguar el PID
$ kill <PID>
$ kill -9 <PID> # Forçar la mort
Executar en segón planol un procés:
$ htop &
Tornar del segón planol a la terminal un procés:
$ fg
Buscar la ubicació d'un programa:
$ whereis nano
Mostrar la data en format DD/MM/AAAA HH:MM:
$ date +"%d/%m/%Y %H:%M"
Consultar l'historial de comandaments:
$ history
Mostrar el PATH dels executables de Libreoffice:
$ whereis libreoffice
Crear un fitxer amb permisos de lectura i escriptura per al usuari, de lectura per al grup i res per als altres que continga tots els alies del sistema:
$ (umask 026; alias > alias.txt)
Anem a analitzar aquest comandament. Primer configurem el umask per a que mai tinga altres permisos el fitxer. Després s'executa el comandament alias que redirecciona l'eixida estàndar a alias.txt. Però tot això es fa dins de () per a fer-lo en un bash diferent i no conservar els umask.
Crear un fitxer anomenat events.txt amb les primeres 50 línies que s'ha generat al arrencar en sistema i les últimes 50. Cal escriure títols que indiquen si són les primeres i on comencen les últimes:
$ dmesg | (echo "Primeres línies: " && head -50 && echo "Últimes línies:" && tail -50)
El resultat de dmesg s'envia a l'entrada estàndard de tots els programes que es fiquen entre parèntesis. El head i tail mostren les línies i el echo no fa cas i mostra el que li pases com a paràmetres.
Xarxa
Assignar una IP a una targeta de xarxa anomenada eth0:
$ sudo ifconfig eth0 192.168.0.2/24
$ sudo ip addr add 192.168.0.2/24 dev eth0
El comandament recomanable és el de ip, ja que forma part d'un paquet nou de ferramentes per substituir el ifconfig, considerat obsolet.
Reiniciar una targeta de xarxa eth0:
$ sudo ifdown eth0
$ sudo ifup eth0
$ /etc/init.d/networking restart # En debian no funciona correctament
Monitorització
Traure la memòria RAM lliure:
$ free -h | grep 'Mem:' | awk '{print $4}'