mercoledì 14 maggio 2008

Come si arresta un processo o un'applicazione bloccata

Maria Susana Diaz | 06:37 |
Come si arresta un processo o un'applicazione bloccata?
Quando un'applicazione nonne vuole proprio sapere di sbloccarsi, l'unico rimedio è “ucciderla” o “killarla”.

Sono disponibili strumenti sia grafici (Xkill) sia a riga di comando come kill. Il primo è utile per arrestare programmi grafici, basta avviarlo dal menu o da shell e cliccare con il mouse sull'applicazione da arrestare.

Per arrestare un'applicazione bloccata o un processo dalla shell, per prima cosa è necessario visualizzare i processi attivi con il comando:

ps -ax

sky8_468x601.gif
dopodiché basta individuare il PID associato all'applicazione bloccata ed eseguire

kill -9 pid_dell'applicazione

l'opzione -9 indica il segnale SIGKILL. Per ottenere l'elenco dei possibili segnali da inviare basta eseguire kill -l. In casi particolari può essere utile il comando fuser, per individuare e arrestare il processo o l'applicazione che blocca una risorsa, ad esempio il lettore CD:

fuser -v /dev/cdrom (individua il processo che occupa il lettore)
fiat500_300x250.giffuser -k /dev/cdrom (invia un segnale di kill al processo e lo termina liberando la risorsa)

Il programma killall invia un segnale a tutti i processi che eseguono i comandi specificati. I segnali possono essere indicati per nome o per numero. Ad esempio per arrestare tutti i processi avviati da Apache si può usare il comando

killall httpd.

È possibile arrestare o riavviare il sistema direttamente dalla riga di comando?
Per arrestare il sistema dalla shell bisogna usare il comando

shutdown -h now
o in alternativa
init 0
Per riavviare il sistema il comando è
shutdown -r now
o anche i questo caso il comando init
init 6

Il comando serve a cambiare il runlevel o livello di esecuzione del sistema, ce ne sono sei e lo 0 indica l'arresto e il 6 il riavvio. Generalmente per l'utilizzo normale del PC vengono utilizzati i runlevel 3 e 4. Per scoprirlo da root basta utilizzare il comando runlevel senza argomenti.

Come si caricano i moduli del kernel?
Per prima cosa è necessario verificare la disponibilità del modulo. Supponendo che vogliamo caricare il modulo per la gestione delle penne USB , usb-storage, possiamo verificarne la presenza utilizzando il comando (da root):
modprobe -l | grep usb
se è presente nell'elenco fornito dal comando, possiamo caricarlo con
modprobe usb-storage
o il nome del modulo che vogliamo caricare. Per ottenere l'elenco dei moduli caricati bastaipod32_300x250.gif eseguire il comando lsmod.

È possibile caricare i moduli automaticamente all'avvio del sistema?
Se ad esempio si intende caricare il modulo irda per il supporto delle periferiche a infrarossi (IrDA) ad ogni avvio del sistema invece eseguire ogni volta:
modprobe irda
è necessario inserire la riga /sbin/modprobe irda

all'interno del file /etc/rc.d/rc.local o nei file corrispondenti a seconda della distribuzione utilizzata.

È necessario deframmentare l'hard disk in GNU/Linux?
I programmi ci sono ma non sono quasi mai necessari e addirittura se ne sconsiglia l'uso. Normalmente la frammentazione di un file system Ext2, quello nativo di Linux, si stabilizza tra il 4% e il 5%, e questo valore non viene mai superato.

Come si visualizza lo spazio disponibile su disco?
Oltre a numerosi programmi grafici integrati nei desktop KDE e Gnome è disponibile il tool df, eseguibile dalla shell anche senza passare opzioni aggiuntive. Fornisce la dimensione di tutti i file system montati e mostra la quantità di spazio libero e utilizzato. Utilizzando l'opzione -h, lo spazio residuo verrà visualizzato in maniera più chiara (G per Gbyte, M per Mbyte). L'opzione -T mostra anche il tipo di file system utilizzato.

Come si verifica se ci sono settori danneggiati sul disco?
Di questo compito si occupa il comando fsck e le sue numerose varianti, a seconda del file system utilizzato dalla partizione da controllare. Per controllare una partizione con file system Ext3 bisogna eseguire:
fsck.ext3 -c /dev/hdaX

dove hda indica il disco e X il numero della partizione. Per visualizzare i comandi disponibili per gli altri tipi di file system basta digitare fsck e premere i tasto di tabulazione.

Come si visualizza la versione del kernel in uso?

Basta eseguire dalla console il comando:
uname -r
Come faccio a verificare le risorse occupate dai processi in esecuzione?
Avviate una shell ed eseguite il comando top senza argomenti. Questo tool fornisce informazioni in tempo reale sull'utilizzo delle risorse di sistema da parte di un programma. Per la CPU e la RAM il valore è espresso in percentuale. Inoltre, sono fornite informazioni sul proprietario del processo, da quanto tempo è in esecuzione, priorità di esecuzione, ecc., oltre ovviamente al nome del processo stesso.

Come si masterizzano le ISO presenti sul DVD?
Per gli utenti che utilizzano Windows e Nero come software di masterizzazione, è sufficiente avviare il programma Nero Burning Rom, chiudere il wizard che parte all'avvio e selezionare la voce del menù principale Masterizzatore, Scrivi immagine.... Dopodiché basta cercare, mediante la finestra di dialogo che appare, l'immagine ISO della distribuzione GNU/Linux che si vuole utilizzare presente all'interno del DVD. Per gli utenti GNU/Linux che utilizzano K3b basta selezionare dal menù Strumenti la voce Scrivi immagine CD..., oppure Scrivi immagine ISO DVD... Dopodiché dalla finestra di dialogo bisogna utilizzare il campo Immagine da scrivere per indicare l'ISO da masterizzare.

Come faccio ad ottenere informazioni sull'hardware del PC
In assenza di tool grafici è sempre possibile ricorrere ai comandi shell. Se l'obiettivo è raccogliere, in un colpo solo, più informazioni possibili sulle periferiche installate il comando necessario è lshw. L'output ottenuto è abbastanza prolisso, quindi, per facilitarne la lettura è opportuno “accoppiarlo” al comando more con una pipe (“|”) nel modo seguente: lshw | more. Così facendo è possibile visualizzare gradualmente i dati ottenuti premendo Invio. Nel caso in cui l'obiettivo è ottenere informazioni sulle periferiche PCI (scheda audio, video, scheda di rete, controller USB, ecc.) il comando diventa lspci. Esiste anche un tool specifico per verificare la presenza di eventuali periferiche collegate alle porte USB il cui comando per eseguirlo è proprio lsusb. Nel caso dei computer portatili è anche possibile ottenere informazioni su eventuali schede PCMCIA connesse utilizzando il comando lspcmcia. Per ottenere informazioni dettagliate su hard disk, lettori CD/DVD e masterizzatori bisogna usare il comando hdparm con l'opzione -i. Supponiamo, ad esempio, di voler “analizzare” il lettore DVD identificato dal file di dispositivo /dev/hdd, in questo caso il comando diventa hdparm -i /dev/hdd. Non dimentichiamo poi il comando dmesg (diagnostic message) che visualizza i messaggi inviati dal kernel contenenti dati importanti relativi all'hardware. Infine, ricordiamo l'inesauribile fonte di informazioni offerta dal file system virtuale /proc. Per poter leggere il suo contenuto basta utilizzare il tool cat. Ad esempio per le periferiche PCI il comando è cat /proc/bus/pci/devices. Se, invece, desiderate ottenere informazioni in tempo reale quando collegate una periferica rimovibile al PC è possibile usare il comando tail -f /var/log/messages, eseguendolo prima di connettere il dispositivo al PC.

subito300x250sell2.jpg
È possibile conoscere la versione di XOrg utilizzata?
Il comando per conoscere quale versione del sistema grafico (X Window System) stiamo utilizzando è molto semplice. È sufficiente eseguire X -version.

Come si avviano e arrestano i processi in esecuzione?
Anche in questo caso, è probabile che la distribuzione utilizzata disponga di tool grafici, ad esempio KSyvInit, per gestire l'esecuzione dei programmi, in caso contrario è possibile intervenire dalla shell. Nella maggior parte dei casi, per queste particolari applicazioni, come quelle server (posta, web, FTP, Samba, MySQL, ecc.), è disponibile il relativo script di avvio nella directory /etc/init.d. Ad esempio per gestire l'esecuzione del server di database MySQL è possibile eseguire il comando /etc/init.d/mysql seguito da una delle seguenti opzioni, start, stop, restart, reload, force-reload, status, a seconda di quello che si vuole fare. Ad esempio, /etc/init.d/mysql restart. Il comando precedente serve per riavviare il server MySQL.

Come si applicano le patch al kernel?
Una patch (letteralmente “pezza”), detta anche file di modifiche o semplicemente aggiornamento, è un frammento di codice che, inserito all'interno del kernel Linux, ma anche di un qualsiasi altro programma, consente di aggiungere a esso nuove funzionalità o correggere eventuali difetti, eliminando allo stesso tempo la necessità di dover reinstallare una nuova versione del software. Nel caso del kernel Linux, ad esempio, evita di dover scaricare e installare nuovamente l'intero sorgente, generalmente di grosse dimensioni. Per quanto riguarda le patch specifiche per il kernel Linux, in genere sono disponibili sotto forma di file compressi con estensione .bz2 o .gz. Per applicarne una al kernel, bisogna innanzitutto copiarla all'interno della directory /usr/src, dopodiché è necessario spostarsi nella stessa cartella mediante il comando cd /usr/src ed eseguire i comandi seguenti a seconda del formato utilizzato:

bzip2 -dc nome_file.bz2 | patch -p1
gzip -dc nomefile.gz | patch -p0

Oltre a questo sistema, è possibile utilizzare lo script patch-kernel presente nella directory /usr/src/linux/scripts. In questo caso è necessario copiare le patch nella directory /usr/src, spostarsi in /usr/src/linux/scripts con cd /usr/src/linux/scripts ed eseguire il comando ./patch-kernel. È importante ricordare che in presenza di più kernel è necessario spostarsi ed eseguire tale comando nella directory corrispondente a quello che si intende patchare. Ad esempio, per il kernel 2.6.20, potrebbe essere qualcosa di simile a /usr/src/linux-2.6.20/scripts. Inoltre, dopo aver applicato la o le patch, prima di poterle sfruttare, è sempre necessario ricompilare il kernel.

È possibile cambiare il nome della macchina?
Il nome assegnato al sistema durante la fase di installazione, meglio conosciuto come “hostname”, serve per identificare il nostro PC (detto anche host o end system). Se non diversamente indicato il nome predefinito diventa, in genere, “localhost”. In tutte le distribuzioni GNU/Linux, tale informazione è conservata all'interno di /etc/hostname; è proprio in questo file che viene indicato il nome della macchina. È chiaro che per cambiare l'hostname è sufficiente modificare la stringa presente nel file /etc/hostname. In alternativa è possibile utilizzare il comando “hostname” che, se eseguito senza argomenti mostra a video il nome della macchina, se seguito da un'altra stringa lo modifica utilizzando il contenuto di questa'ultima al suo posto. Ad esempio: hostname linuxpc.

Cosa contiene la directory /tmp? È possibile cancellarla?
Molti programmi in esecuzione durante il normale utilizzo del PC usano la directory /tmp per archiviare al suo interno alcuni file, spesso temporanei, necessari alla loro esecuzione. In alcuni casi, il contenuto di tale directory può raggiungere dimensioni spropositate (per verificarlo basta eseguire du -h /tmp), quindi, sarebbe una buona idea ripulirla, ma è possibile farlo solo prima che qualsiasi programma possa scrivere qualcosa al suo interno. Detto ciò, risulta evidente che il momento più opportuno è proprio durante la fase di avvio del sistema. Per farlo è sufficiente creare un semplice script da inserire nella directory contente i servizi da avviare ovvero /etc/init.d. Alcune distribuzioni eseguono in automatico tale procedura, in caso contrario lo script da inserire è composto nel modo seguente:

#!/bin/bash
rm -Rf /tmp/*

Permessi predefiniti per file e directory
Per poter assegnare permessi predefiniti ai file e alle directory bisogna utilizzare il comando umask, conosciuto anche come maschera dei permessi. Attenzione, tramite questo tool non è possibile modificare i permessi di file già esistenti, ma consente “solo” di stabilire a priori quali saranno i diritti di accesso applicati di default ai file, ma anche alle directory, nel momento in cui vengono creati ma non vengono specificati i permessi. In pratica i permessi indicati con umask non verranno applicati ai nuovi file. Per conoscere il valore corrente della maschera è sufficiente eseguire il comando umask e premere Invio. In genere, il risultato che si ottiene è 0022, il che significa che il permesso di scrittura, indicato proprio dal numero 2 verrà tolto sia agli altri utenti sia al gruppo. Per ottenere un output più leggibile è possibile utilizzare l'opzione -S (umask -S). In questo caso il risultato sarà quello seguente:

u=rwx,g=rx,o=rx

Come vedete l'utente proprietario del file, identificato dalla “u”, dispone di tutti i permessi “r” read (lettura), “w” write (scrittura) e “x” che sta per “execution” o esecuzione. Mentre al gruppo “g” (group) e agli altri utenti “o” (other) il permesso di scrittura (“w”) non è concesso, proprio come stabilito da umask. Questo significa che al momento della creazione di un qualsiasi file o directory, se non espressamente specificato, verranno applicati tali permessi. Per modificare il valore della maschera dei permessi basta eseguire umask seguito dalla nuova direttiva, ad esempio:

umask 0077

In questo caso (limite), su tutti i nuovi file e directory, verranno tolti tutti i permessi (7), cioè lettura, scrittura, ed esecuzione per il gruppo e gli altri utenti. Ricordiamo che in base al sistema di gestione dei permessi il numero 4 indica l'accesso in lettura, il 2 quello in scrittura e l'1 quello di esecuzione. Ecco spiegato il valore 7, cioè 4+2+1. È chiaro che il 4 corrisponde alla r, il 2 alla w e l'1 alla x. Sono solo due metodi diversi di rappresentare i permessi, ma il risultato è uguale.

Come si configura la rotella del mouse?
In genere non è più necessario configurare manualmente questo aspetto. Ma se per qualche motivo la nostra distribuzione non riuscisse a farlo automaticamente è necessario intervenire direttamente sul file di configurazione del sistema grafico X (/etc/X11/xorg.conf). Per prima cosa bisogna individuare la sezione relativa al mouse, Section "InputDevice", dopodiché bisogna indicare al server grafico che il mouse in questione ha 5 pulsanti: 3 per la pressione, 4 per la rotella sù e 5 per la rotella giù. Segue un esempio di configurazione corretta:

Section "InputDevice"
Identifier "Configured Mouse"
Driver "mouse"
Option "CorePointer"
Option "Device" "/dev/input/mice"
Option "Protocol" "ImPS/2"
Option "ZAxisMapping" "4 5"
Option "Emulate3Buttons" "off"
EndSection

L'operazione va eseguita come utente root, dopodiché, per applicare le modifiche è necessario riavviare il sistema grafico.

moto728x901.gif

TiPI (Ti Potrebbe Interessare)

LinuxLinks

Trovato questo articolo interessante? Condividilo sulla tua rete di contatti in Twitter, sulla tua bacheca su Facebook, in Linkedin, Instagram o Pinterest. Diffondere contenuti che trovi rilevanti aiuta questo blog a crescere. Grazie!

LINKEDIN