>_ Sistemi operativi e Linux

macOS dal Terminale: Homebrew, launchd e strumenti di sistema

macOS sotto il cofano: Terminale e zsh, programmi con Homebrew, servizi con launchd, Monitoraggio Attività, log e i comandi propri del sistema Apple.

Molti usano un Mac per anni senza aprire mai il Terminale, e va benissimo. Ma sotto l'interfaccia grafica c'è un sistema di tradizione Unix, con una shell, una struttura di cartelle precisa e comandi che permettono di fare in pochi secondi ciò che con il mouse richiede molti passaggi. Chi conosce già Linux si troverà quasi a casa; con qualche differenza che vale la pena conoscere prima di copiare comandi da una guida pensata per un altro sistema.

Il Terminale e la shell

L'app Terminale si trova in Applicazioni > Utility, o si apre cercandola con Spotlight. Da macOS Catalina la shell predefinita è zsh, che per l'uso quotidiano si comporta in modo molto simile a Bash. Le impostazioni personali vanno in ~/.zshrc; le variabili come il PATH possono stare anche in ~/.zprofile.

I comandi di base sono quelli che si usano su Linux: ls, cd, cp, mv, grep, find. Attenzione però: molti di questi provengono dalla tradizione BSD e non da GNU, e alcune opzioni differiscono. L'esempio classico è sed -i, che su macOS richiede un argomento per l'estensione del file di backup, anche vuoto: sed -i '' 's/vecchio/nuovo/' file.txt. Anche date e stat hanno opzioni diverse da quelle di Linux.

Comandi propri di macOS

Alcuni strumenti esistono solo sul Mac e sono molto comodi:

Comando Cosa fa
open file.pdf apre un file con l'applicazione predefinita
open . apre la cartella corrente nel Finder
open -a Safari pagina.html apre un file con un'app precisa
pbcopy, pbpaste scrivono e leggono gli appunti
mdfind cerca con l'indice di Spotlight
caffeinate impedisce lo stop finché è attivo
softwareupdate -l elenca gli aggiornamenti di sistema
diskutil list elenca dischi e volumi

Per esempio, cat chiave.pub | pbcopy mette il contenuto di un file negli appunti, pronto da incollare in una pagina web. caffeinate -i lanciato prima di un lungo trasferimento evita che il Mac vada in stop a metà.

Homebrew: il gestore di pacchetti

macOS non include un gestore di pacchetti per gli strumenti da riga di comando. Il riferimento, di fatto, è Homebrew, un progetto indipendente. Si installa con il comando riportato sul suo sito ufficiale e, una volta presente, funziona così:

brew install wget
brew install --cask firefox
brew update
brew upgrade
brew list
brew uninstall wget

La differenza tra formula e cask è utile da conoscere: le formule sono programmi da riga di comando e librerie, i cask sono applicazioni con interfaccia grafica, installate nella cartella Applicazioni. Sui Mac con processore Apple Silicon Homebrew si installa in /opt/homebrew, su quelli con processore Intel in /usr/local; è il motivo per cui alcune guide indicano percorsi diversi.

Un consiglio pratico: brew doctor segnala i problemi di configurazione più comuni, e brew cleanup elimina le vecchie versioni scaricate, che col tempo occupano spazio.

launchd: i servizi del Mac

Sul Mac il ruolo che su Linux ha systemd spetta a launchd, il primo processo avviato dal sistema. Gestisce sia i servizi di sistema sia quelli dell'utente, descritti in file .plist in formato XML. Le cartelle principali sono:

  • ~/Library/LaunchAgents: servizi dell'utente, avviati al suo accesso;
  • /Library/LaunchAgents e /Library/LaunchDaemons: servizi installati da programmi di terze parti, per tutti gli utenti;
  • /System/Library/...: servizi di Apple, da non toccare.

Il comando di gestione è launchctl. Per vedere i servizi dell'utente si usa launchctl list. Molti programmi di terze parti installano agenti in queste cartelle per avviarsi in automatico o controllare aggiornamenti. Quando un Mac rallenta senza motivo apparente, nel mio lavoro guardo proprio qui: agenti dimenticati di applicazioni disinstallate continuano a volte a partire a ogni accesso. Nelle versioni recenti di macOS anche Impostazioni di Sistema > Generali > Elementi login mostra quali app hanno elementi in background e permette di disattivarli.

Monitoraggio Attività e i processi

Monitoraggio Attività è l'equivalente grafico di top. Le schede più utili sono CPU, Memoria ed Energia. Nella scheda Memoria conta soprattutto il grafico Pressione memoria: se è verde, il sistema ha memoria a sufficienza anche se la RAM risulta quasi piena, perché macOS comprime le pagine poco usate prima di ricorrere allo swap. Dal Terminale top -o cpu ordina i processi per uso del processore.

Log e diagnostica

L'app Console mostra i messaggi di sistema e i rapporti sugli arresti anomali delle applicazioni. Dal Terminale c'è il comando log:

log show --last 1h --predicate 'eventMessage contains "error"'
log stream --process Safari

Il primo mostra i messaggi dell'ultima ora che contengono «error», il secondo segue in diretta quelli di un processo.

Dischi e protezione del sistema

diskutil gestisce dischi e volumi: diskutil list per vederli, diskutil info disk2 per i dettagli, diskutil eraseDisk per inizializzarli, con le stesse cautele di qualsiasi operazione distruttiva. Il filesystem è APFS, con istantanee usate anche da Time Machine.

Va ricordato che il volume di sistema di macOS è in sola lettura e protetto dalla System Integrity Protection. È normale che sudo non permetta di modificare file sotto /System: le personalizzazioni vanno in /usr/local, /opt o nella propria cartella utente.

In sintesi

  • Il Terminale usa zsh; i comandi sono simili a Linux, ma molte opzioni seguono BSD.
  • open, pbcopy, mdfind e caffeinate sono scorciatoie proprie del Mac.
  • Homebrew gestisce programmi da riga di comando (formule) e applicazioni (cask).
  • launchd e i file .plist in LaunchAgents controllano cosa parte in automatico.
  • Il volume di sistema è in sola lettura: le modifiche vanno nelle cartelle dell'utente o in /opt.
MM
Marco Marzaduri

Marco Marzaduri si occupa di cybersecurity, informatica forense e sviluppo web. Laureato in informatica e in psicologia, unisce l'analisi tecnica alla comprensione del fattore umano.

Leggi anche