Neste tutorial, analisaremos alguns dos comandos Linux que são essenciais para utilizar uma máquina Linux e um Raspberry Pi em particular.
Informação da máquina
uname permet d’obtenir les information système (nom du noyau, version kernel, OS, etc.)
pi@raspberrypi:~ $ uname Linux pi@raspberrypi:~ $ uname -a Linux raspberrypi 4.19.97+ #1294 Thu Jan 30 13:10:54 GMT 2020 armv6l GNU/Linux pi@raspberrypi:~ $ uname --all Linux raspberrypi 4.19.97+ #1294 Thu Jan 30 13:10:54 GMT 2020 armv6l GNU/Linux pi@raspberrypi:~ $
lshw permet d’obtenir la configuration matériel. Vous pouvez utiliser l’option -short pour afficher le résumé. (ne fonctionne pas avec Raspberry Pi)
Sur Raspberry Pi, vous pouvez utiliser la commande cat /proc/cpuinfo
pi@raspberrypi:~ $ cat /proc/cpuinfo processor : 0 model name : ARMv7 Processor rev 4 (v7l) BogoMIPS : 38.40 Features : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32 CPU implementer : 0x41 CPU architecture: 7 CPU variant : 0x0 CPU part : 0xd03 CPU revision : 4
df -h permite conhecer o espaço livre no cartão de memória (muito útil com framboesa pi)
pi@raspberrypi:~ $ df -h Sys. de fichiers Taille Utilisé Dispo Uti% Monté sur /dev/root 3,3G 3,1G 13M 100% / devtmpfs 181M 0 181M 0% /dev tmpfs 185M 0 185M 0% /dev/shm tmpfs 185M 5,2M 180M 3% /run tmpfs 5,0M 4,0K 5,0M 1% /run/lock tmpfs 185M 0 185M 0% /sys/fs/cgroup /dev/mmcblk0p6 253M 53M 200M 21% /boot tmpfs 37M 0 37M 0% /run/user/1000
Comando do Super Utilizador Linux
sudo est la commande qui permet de passer en super utilisateur ou administrateur. Généralement, utiliser avec une autre commande et le mot de passe de la session.
Utilizar quando o comando devolve o erro “13: Permissão negada”.
Comandos de instalação do Linux
O comando apt-get é utilizado para instalar software e pacotes na máquina.
Em particular, descarregando e instalando actualizações de SO
sudo apt-get update
sudo apt-get upgrade
apt-get é também utilizado para instalar ou remover pacotes
sudo apt-get install
sudo apt-get remove
sudo apt-get purge -y
Finalmente, dois comandos para libertar espaço de memória
sudo apt-get autoremovesudo apt-get clean
La commande wget permet le téléchargement de fichier distant et peut aussi permettre de télécharger des packages à installer
Exemplo: para descarregar o software Arduino
cd /tmp
wget https://downloads.arduino.cc/arduino-1.8.9-linux64.tar.xz
mkdir -p ~/opt/
tar -xf arduino-1.8.9-linux64.tar.xz -C ~/opt/
cd $HOME/opt/arduino-1.8.9
./install.sh
Comandos Linux para navegar através de uma pasta
O comando pwd permite-lhe saber em que directório se encontra
pi@raspberrypi:~ $ pwd /home/pi
ls lista todas as pastas e ficheiros no directório actual
pi@raspberrypi:~ $ ls 2020-05-27-144933_1824x984_scrot.png Desktop MagPi Public 2020-05-27-144941_1824x984_scrot.png Documents Modèles Téléchargements Applications Images Musique Vidéos
O cd permite-lhe mover-se para uma pasta :
pi@raspberrypi:~ $ cd Desktop pi@raspberrypi:~/Desktop $ W
A sintaxe deste comando é a seguinte: coloca-se “cd”, depois um espaço e finalmente o nome da pasta a que se quer ir. Há várias adições que modificam o comando básico:
cd .. ##Permet de revenir dans le dossier précédent
cd ##Permet de revenir à la racine
cd Bureau/Work ##Permet d'aller dans le dossier Work qui se trouve dans le dossier Bureau
cd ../.. ##Permet de remonter deux dossiers plus haut dans l'arborescence
Para criar directórios
mkdir para criar uma pasta
pi@raspberrypi:~/Desktop $ ls reset_usb.py rpi-arduino-i2c.py rpi-arduino-serial.py rpi-pca9685.py pi@raspberrypi:~/Desktop $ mkdir Work pi@raspberrypi:~/Desktop $ ls reset_usb.py rpi-arduino-i2c.py rpi-arduino-serial.py rpi-pca9685.py Work
rmdir para apagar uma pasta
pi@raspberrypi:~/Desktop $ rmdir Work pi@raspberrypi:~/Desktop $ ls reset_usb.py rpi-arduino-i2c.py rpi-arduino-serial.py rpi-pca9685.py
rm -R para apagar uma pasta e todo o seu conteúdo
Para reproduzir um ficheiro
cat para exibir o ficheiro completo
pi@raspberrypi:~ $ cat /var/log/syslog Mar 18 15:40:32 raspberrypi rsyslogd: [origin software="rsyslogd" swVersion="8.1901.0" x-pid="300" x-info="https://www.rsyslog.com"] rsyslogd was HUPed Mar 18 15:40:34 raspberrypi rsyslogd: [origin software="rsyslogd" swVersion="8.1901.0" x-pid="300" x-info="https://www.rsyslog.com"] rsyslogd was HUPed Mar 18 15:40:34 raspberrypi systemd[1]: logrotate.service: Succeeded. Mar 18 15:40:34 raspberrypi systemd[1]: Started Rotate log files. Mar 18 15:40:37 raspberrypi systemd[1]: systemd-hostnamed.service: Succeeded. Mar 18 15:40:45 raspberrypi systemd[1]: man-db.service: Succeeded. Mar 18 15:40:45 raspberrypi systemd[1]: Started Daily man-db regeneration.
head para ler o cabeçalho de um ficheiro
pi@raspberrypi:~ $ head -n 10 /var/log/syslog Mar 18 15:40:32 raspberrypi rsyslogd: [origin software="rsyslogd" swVersion="8.1901.0" x-pid="300" x-info="https://www.rsyslog.com"] rsyslogd was HUPed Mar 18 15:40:34 raspberrypi rsyslogd: [origin software="rsyslogd" swVersion="8.1901.0" x-pid="300" x-info="https://www.rsyslog.com"] rsyslogd was HUPed Mar 18 15:40:34 raspberrypi systemd[1]: logrotate.service: Succeeded. Mar 18 15:40:34 raspberrypi systemd[1]: Started Rotate log files. Mar 18 15:40:37 raspberrypi systemd[1]: systemd-hostnamed.service: Succeeded. Mar 18 15:40:45 raspberrypi systemd[1]: man-db.service: Succeeded. Mar 18 15:40:45 raspberrypi systemd[1]: Started Daily man-db regeneration. Mar 18 15:40:47 raspberrypi dbus-daemon[633]: [session uid=1000 pid=633] Activating via systemd: service name='org.gtk.vfs.UDisks2VolumeMonitor' unit='gvfs-udisks2-volume-monitor.service' requested by ':1.7' (uid=1000 pid=750 comm="pcmanfm --desktop --profile LXDE-pi ") Mar 18 15:40:47 raspberrypi systemd[531]: Starting Virtual filesystem service - disk device monitor... Mar 18 15:40:50 raspberrypi dbus-daemon[633]: [session uid=1000 pid=633] Successfully activated service 'org.gtk.vfs.UDisks2VolumeMonitor'
tail para ler o fim do ficheiro
pi@raspberrypi:~ $ tail -f /var/log/syslog Mar 18 16:00:09 raspberrypi kernel: [ 1254.094894] ICMPv6: NA: bc:a8:a6:e7:a1:c6 advertised our address 2001:861:3742:78b0:76b1:2f81:bb6e:5bd1 on wlan0! Mar 18 16:10:06 raspberrypi kernel: [ 1850.887447] ICMPv6: NA: bc:a8:a6:e7:a1:c6 advertised our address 2001:861:3742:78b0:76b1:2f81:bb6e:5bd1 on wlan0! Mar 18 16:10:07 raspberrypi kernel: [ 1851.909164] ICMPv6: NA: bc:a8:a6:e7:a1:c6 advertised our address 2001:861:3742:78b0:76b1:2f81:bb6e:5bd1 on wlan0! Mar 18 16:14:14 raspberrypi kernel: [ 2098.887584] ICMPv6: NA: bc:a8:a6:e7:a1:c6 advertised our address 2001:861:3742:78b0:76b1:2f81:bb6e:5bd1 on wlan0! Mar 18 16:14:15 raspberrypi kernel: [ 2099.925466] ICMPv6: NA: bc:a8:a6:e7:a1:c6 advertised our address 2001:861:3742:78b0:76b1:2f81:bb6e:5bd1 on wlan0! Mar 18 16:14:16 raspberrypi kernel: [ 2100.949293] ICMPv6: NA: bc:a8:a6:e7:a1:c6 advertised our address 2001:861:3742:78b0:76b1:2f81:bb6e:5bd1 on wlan0! Mar 18 16:17:01 raspberrypi CRON[1461]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly) Mar 18 16:18:38 raspberrypi kernel: [ 2362.996869] ICMPv6: NA: bc:a8:a6:e7:a1:c6 advertised our address 2001:861:3742:78b0:76b1:2f81:bb6e:5bd1 on wlan0! Mar 18 16:18:39 raspberrypi kernel: [ 2364.016852] ICMPv6: NA: bc:a8:a6:e7:a1:c6 advertised our address 2001:861:3742:78b0:76b1:2f81:bb6e:5bd1 on wlan0! Mar 18 16:18:40 raspberrypi kernel: [ 2365.040711] ICMPv6: NA: bc:a8:a6:e7:a1:c6 advertised our address 2001:861:3742:78b0:76b1:2f81:bb6e:5bd1 on wlan0!
Para criar e editar um ficheiro
É possível criar e editar ficheiros directamente a partir do terminal. Isto é particularmente útil quando se acede remotamente ao microcontrolador, tal como um Raspberry Pi Headless.
touch MON_FICHIER.py ##Permet de créer un fichier
nano MON_FICHIER.py ##Permet de créer un fichier (si il n'existe pas encore) et d'ouvrir un éditeur de texte intégré à la console Linux
Em primeiro lugar, o comando “nano” permite abrir um ficheiro através de um editor de texto integrado na consola terminal. O comando “nano” abre este ficheiro e cria-o se o ficheiro não existir.
Para copiar, mover, apagar um ficheiro
mv para mover um ficheiro
mv [fichier_répertoire_source] [fichier_répertoire_cible]
cp para copiar um ficheiro
cp [option]
Exemplo:
cp -r /path/to/source/ /destination/ #Pour copier le dossier source dans le dossier destination
cp -r /path/to/source/* /destination/ #Pour copier le contenu du dossier source dans le dossier destination
rm para apagar um ficheiro ou pasta
rm /répertoire/nom_du_fichier
Para pesquisar uma cadeia de caracteres num ficheiro ou directório
find Para encontrar um ficheiro
pi@raspberrypi:~ $ sudo find / -name syslog find: ‘/run/user/1000/gvfs’: Permission non accordée /run/systemd/journal/syslog /var/log/syslog
Para encontrar texto num ficheiro, use o comando grep ou fgrep
pi@raspberrypi:~ $ grep Arduino /var/log/syslog Mar 18 17:10:22 raspberrypi kernel: [ 5466.943038] usb 1-1: Product: Arduino Uno Mar 18 17:10:22 raspberrypi kernel: [ 5466.943049] usb 1-1: Manufacturer: Arduino (www.arduino.cc) pi@raspberrypi:~ $ grep tty /var/log/syslog Mar 18 17:10:22 raspberrypi kernel: [ 5467.184359] cdc_acm 1-1:1.0: ttyACM0: USB ACM device
Para fazer uma pesquisa recursiva de texto a partir do directório actual, use fgrep -ri
fgrep -ri mystring * # Pour rechercher "mystring" dans tous les types de fichiers de manière récursive
N.B.: Grep utiliza expressões regulares (regexp), o que significa que pode especificar a sua pesquisa. Para praticar com expressões regulares, pode utilizar este sítio.
Gestão de processos
top (ou htop) é o equivalente do gestor de tarefas no Windows. Dá uma ideia da saúde da máquina e dos processos activos.
ps -aux para exibir os processos actuais
pi@raspberrypi:~ $ ps -aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.2 2.0 32724 7832 ? Ss 15:39 0:10 /sbin/init spla root 2 0.0 0.0 0 0 ? S 15:39 0:00 [kthreadd] root 4 0.0 0.0 0 0 ? I< 15:39 0:03 [kworker/0:0H-k root 6 0.0 0.0 0 0 ? I< 15:39 0:00 [mm_percpu_wq] root 7 0.0 0.0 0 0 ? S 15:39 0:01 [ksoftirqd/0] root 8 0.0 0.0 0 0 ? S 15:39 0:00 [kdevtmpfs] root 9 0.0 0.0 0 0 ? I< 15:39 0:00 [netns] root 11 0.0 0.0 0 0 ? S 15:39 0:00 [khungtaskd] root 12 0.0 0.0 0 0 ? S 15:39 0:00 [oom_reaper] root 13 0.0 0.0 0 0 ? I< 15:39 0:00 [writeback]
Combinar com o grep para encontrar processos particulares
pi@raspberrypi:~ $ ps -aux | grep python pi 1817 0.8 1.5 12660 5860 pts/1 S+ 17:21 0:00 python pi 1820 0.0 0.4 7348 1880 pts/0 S+ 17:21 0:00 grep --color=auto python
kill/killall para apagar um processo depois de ter encontrado o pid usando grep (aqui 1817 para o processo python)
pi@raspberrypi:~ $ ps -aux | grep python pi 1817 0.8 1.5 12660 5860 pts/1 S+ 17:21 0:00 python pi 1820 0.0 0.4 7348 1880 pts/0 S+ 17:21 0:00 grep --color=auto python pi@raspberrypi:~ $ kill -9 1817
Resultado se uma sessão python for aberta noutro terminal
pi@raspberrypi:~ $ python Python 2.7.16 (default, Oct 10 2019, 22:02:15) [GCC 8.3.0] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> Processus arrêté pi@raspberrypi:~ $
Identificação das portas USB
lsusb para obter a lista de dispositivos usb
pi@raspberrypi:~ $ lsusb Bus 001 Device 003: ID 2341:0001 Arduino SA Uno (CDC ACM) Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
dmesg | grep tty para obter os dispositivos detectados
dmesg | grep tty [ 0.000000] console [tty0] enabled [ 1.537553] serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A [ 1.537762] 00:07: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
ls /dev/tty* para obter a lista de dispositivos (incluindo portas USB)
pi@raspberrypi:~ $ ls /dev/tty* /dev/tty /dev/tty16 /dev/tty24 /dev/tty32 /dev/tty40 /dev/tty49 /dev/tty57 /dev/tty8 /dev/tty0 /dev/tty17 /dev/tty25 /dev/tty33 /dev/tty41 /dev/tty5 /dev/tty58 /dev/tty9 /dev/tty1 /dev/tty18 /dev/tty26 /dev/tty34 /dev/tty42 /dev/tty50 /dev/tty59 /dev/ttyACM0 /dev/tty10 /dev/tty19 /dev/tty27 /dev/tty35 /dev/tty43 /dev/tty51 /dev/tty6 /dev/ttyAMA0 /dev/tty11 /dev/tty2 /dev/tty28 /dev/tty36 /dev/tty44 /dev/tty52 /dev/tty60 /dev/ttyprintk /dev/tty12 /dev/tty20 /dev/tty29 /dev/tty37 /dev/tty45 /dev/tty53 /dev/tty61 /dev/ttyS0 /dev/tty13 /dev/tty21 /dev/tty3 /dev/tty38 /dev/tty46 /dev/tty54 /dev/tty62 /dev/tty14 /dev/tty22 /dev/tty30 /dev/tty39 /dev/tty47 /dev/tty55 /dev/tty63 /dev/tty15 /dev/tty23 /dev/tty31 /dev/tty4 /dev/tty48 /dev/tty56 /dev/tty7
Comandos Linux para a rede
hostname é utilizado para obter o nome ou o endereço IP da máquina
pi@raspberrypi:~ $ hostname raspberrypi pi@raspberrypi:~ $ hostname -i 127.0.1.1 pi@raspberrypi:~ $ hostname -I 192.168.1.43 2001:861:3742:78b0:76b1:2f81:bb6e:5bd1
O comando ifconfig é utilizado para obter informações sobre a rede, incluindo endereços IP.
pi@raspberrypi:~ $ ifconfig lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10<host> loop txqueuelen 1000 (Boucle locale) RX packets 17 bytes 1004 (1004.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 17 bytes 1004 (1004.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.1.43 netmask 255.255.255.0 broadcast 192.168.1.255 inet6 2001:861:3742:78b0:76b1:2f81:bb6e:5bd1 prefixlen 64 scopeid 0x0<global> inet6 fe80::1d5d:81c0:3c34:73cd prefixlen 64 scopeid 0x20<link> ether b8:27:eb:d5:83:aa txqueuelen 1000 (Ethernet) RX packets 13878 bytes 1570890 (1.4 MiB) RX errors 0 dropped 1 overruns 0 frame 0 TX packets 6020 bytes 1933262 (1.8 MiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
ping é útil para testar a comunicação em rede. Pode colocar um endereço IP ou um endereço web como argumento (adicionar a opção -c 10 para executar apenas 10 pedidos)
ping -c 10 192.168.1.43 PING 192.168.1.43 (192.168.1.43) 56(84) bytes of data. 64 bytes from 192.168.1.43: icmp_seq=1 ttl=64 time=0.393 ms 64 bytes from 192.168.1.43: icmp_seq=2 ttl=64 time=0.300 ms 64 bytes from 192.168.1.43: icmp_seq=3 ttl=64 time=0.276 ms 64 bytes from 192.168.1.43: icmp_seq=4 ttl=64 time=0.278 ms 64 bytes from 192.168.1.43: icmp_seq=5 ttl=64 time=0.278 ms 64 bytes from 192.168.1.43: icmp_seq=6 ttl=64 time=0.280 ms 64 bytes from 192.168.1.43: icmp_seq=7 ttl=64 time=0.344 ms 64 bytes from 192.168.1.43: icmp_seq=8 ttl=64 time=0.339 ms 64 bytes from 192.168.1.43: icmp_seq=9 ttl=64 time=0.355 ms 64 bytes from 192.168.1.43: icmp_seq=10 ttl=64 time=0.356 ms --- 192.168.1.43 ping statistics --- 10 packets transmitted, 10 received, 0% packet loss, time 318ms rtt min/avg/max/mdev = 0.276/0.319/0.393/0.046 ms
arp devolve uma lista de dispositivos ligados à rede
pi@raspberrypi:~ $ arp -a bbox.lan (192.168.1.254) at 48:83:c7:59:27:8c [ether] on wlan0 pi@raspberrypi:~ $ arp -e Adresse TypeMap AdresseMat Indicateurs Iface bbox.lan ether 48:83:c7:59:27:8c C wlan0
Desligar a máquina
shutdown para desligar o sistema de forma limpa
halt para desligar o sistema parando todos os processos em curso
sudo reboot para reiniciar