INTRODUZIONE ALLA SHELL BASH (PARTE 1) Marica Antonacci INFN BARI

Documenti analoghi
Lab. di Sistemi Operativi - Lezione in aula - a.a. 2012/2013

Il sistema operativo LINUX La shell

Introduzione a Unix. U.Villano, E.Mancini. November 24, U.Villano, E.Mancini () Introduzione a Unix November 24, / 26

Introduzione. P4 termina prima di P3, P2 e P3 prima di P1 P1 P2 P3 P4 P1 P1 P2 P3 P4. Padre. P1,..., P4 sono processi. Figlio

Lezione 3: Programmazione della Shell di Unix

Lezione 5 in laboratorio processi, stringhe

Processi. Introduzione. Effective user/group id. Fork

Richiami sui Concetti Fondamentali dei Processi

Laboratorio di sistemi operativi A.A. 2010/2011 Gruppo 2 Gennaro Oliva Processi

Sistemi Operativi e informatica 1

La Shell: esecuzione dei comandi

COSA È UN SISTEMA OPERATIVO (SO)? È un programma (o un insieme di programmi) che agisce come intermediario tra l utente e l hardware del computer:

Corso di Laboratorio di Sistemi Operativi

La Shell di Unix. l utente impartisce i comandi al sistema digitandoli ad un apposito prompt;

Cosa è un sistema operativo?

Cosa è un sistema operativo?

COSA È UN SISTEMA OPERATIVO? È un programma (o un insieme di programmi) che agisce come intermediario tra l utente e l hardware del computer:

CORSO LINUX PER LA CERTIFICAZIONE LPI ESSENTIALS

Processi. Esecuzione di programmi. Multi-tasking. Processo = programma in esecuzione

Gestione dei processi

Lezione 1: Introduzione alla Shell di Unix

SISTEMI OPERATIVI. Processi in Linux. Giorgio Giacinto Sistemi Operativi

Esercitazione 1 la shell

Introduzione a Unix/Bash. Insieme minimo di strumenti per interagire con la shell Bash, compilare ed eseguire

Comandi filtro: sed. Se non si specificano azioni, sed stampa sullo standard output le linee in input, lasciandole inalterate.

Introduzione alla programmazione nella shell di Unix 10 Maggio 2005

Manipolazioni elementari di flussi di testo strutturati

Shell di Linux e Comandi Utente

Page 1. Programmazione. Shell e programmazione. File comandi (script) Introduzione alla programmazione nella shell di Unix

Il terminale per tutti

Esame Laboratorio di Sistemi Operativi Cognome Nome Mat.

Introduzione a Linux Lezione 4 Gestione dei processi

Shell: csh e tcsh. Di shell non ne esiste una sola... Per il momento... Funzioni della shell. In cosa si differenziano?

BREVISSIMA GUIDA AL SISTEMA UNIX / LINUX

Di shell non ne esiste una sola...

Shell BASH. Variabili Redirezione

Laboratorio di Informatica di Base Progetto Tandem 2007/2008

Proprietà di un processo

Esercizio sulla gestione di processi in Unix!

L utility Unix awk [Aho-Weinberger-Kernighan]

LINUX: struttura generale

Corso di avvicinamento al Software Libero. Lunedi 23 Gennaio

Esempio di domande sul file system

LABORATORIO DI SISTEMI OPERATIVI

Introduzione a UNIX shell e file comandi. Sistemi Operativi T AA

Laboratorio Sistemi Operativi

Fondamenti di Informatica e Laboratorio T-AB Ingegneria Elettronica e Telecomunicazioni. Lab Shell. Lab-Shell 1

CORSO DI SISTEMI OPERATIVI A - ESERCITAZIONE 4

Il sistema operativo UNIX/Linux. Le shell Stefano Quer Dipartimento di Automatica e Informatica Politecnico di Torino

Introduzione a UNIX shell e file comandi

Simulazione esame Laboratorio di Sistemi Operativi Cognome Nome Mat.

Esecuzione di script

Utente. Sistemi operativi 2003/2004. /etc/passwd

BASH: Bourne Again Shell (3)

System call per la gestione di processi

Bash: history list (I)

Settima esercitazione. Shell scripting

Corso Linux Base. 2. Uso del Sistema

Senza Soluzioni. Può un altro utente non appartenente al gruppo di mgiorgio, eseguire gli stessi comandi?

System call per la gestione di processi

Introduzione a UNIX shell e file comandi

Per visualizzare il valore di tutte le variabili d ambiente si usa il comando env

Introduzione al sistema Linux

GLUG Govonis. Corso Avanzato GNU / Linux. Lezione del Shell

Esercizi su permessi

Sistemi Operativi. Corso di Laurea Triennale in Ingegneria Informatica. Daniel Cesarini

SHELL. Laboratorio di S.O. 1 Guido Fiorino

ESERCITAZIONE 2 fork e exec

Introduzione a UNIX shell e file comandi. Sistemi Operativi T AA

Sistemi Operativi 1. Mattia Monga. a.a. 2010/11. Dip. di Informatica e Comunicazione Università degli Studi di Milano, Italia

Corso di Laboratorio di Sistemi Operativi A.A Fabio Buttussi Ivan Scagnetto

Laboratorio di Sistemi Operativi Guido Fiorino

Laboratorio in C su Processi e POSIX IPC (Inter Process Communications) Dalla nona lezione di laboratorio in avanti

Keep it simple, stupid!

Corso di Informatica

Bash: history list (I)

Info Architettura, JVM Installazione JDK (Windows, Linux) Hello world!

Shell scripting. Turing completi approccio procedurale non tipati (l'unico tipo disponibile è la stringa) interpretati

Lab. di Sistemi Operativi - Esercitazione n 2- - comando di ricerca: grep -

Come si accede a BASH Tasti utili: Ctrl-Alt-F1, Ctrl-Alt-F7. Il Primo comando : exit (CASE SENSITIVE!!) Si può uscire con CTRL-D

LABORATORIO DI SISTEMI OPERATIVI

Il sistema operativo UNIX/Linux Le shell

Usare Python in Linux

Gli script di shell. U.Villano, E.Mancini. December 1, U.Villano, E.Mancini () Gli script di shell December 1, / 64

01 Terminale e file system

LABORATORIO DI SISTEMI OPERATIVI

Diplomi Universitari Teledidattici. Sistemi Operativi

Corso di Laboratorio di Sistemi Operativi A.A Fabio Buttussi

Filtri e pipeline. qualsiasi comando unix ha a disposizione 3 file con cui comunicare con il resto del sistema: standard input in ingresso

Il sistema operativo LINUX Script di Shell

Il sistema operativo LINUX Esercitazione 3

LABORATORIO DI SISTEMI OPERATIVI

Il sistema operativo UNIX/Linux. Gli script di shell

Università degli Studi di Cagliari Corso di Laurea Specialistica in Ingegneria Elettronica. SISTEMI OPERATIVI A.A. 2004/2005 Docente: Giorgio Giacinto

Laboratorio di Informatica di Base

Esame Laboratorio di Sistemi Operativi Cognome Nome Mat.

CORSO LINUX PER LA CERTIFICAZIONE LPI ESSENTIALS

Transcript:

INTRODUZIONE ALLA SHELL BASH (PARTE 1) Marica Antonacci INFN BARI

OUTLINE Cosa è la shell Tipi di shell Esecuzione di comandi Comandi base per la gestione dei processi

SHELL Programma che permette di far interagire l utente (interfaccia testuale) con SO tramite comandi resta in attesa di un comando mandandolo in esecuzione alla pressione di <ENTER> In realtà shell è un interprete comandi evoluto: opotente linguaggio di scripting ointerpreta ed esegue comandi da standard input o da file comandi

FUNZIONI TIPICHE DI UNA SHELL La shell interpreta un vero e proprio linguaggio di programmazione che permette all utente di controllare l esecuzione di comandi, sia in modo interattivo che in modo "batch" ("script" di shell) Funzioni tipiche: esecuzione di comandi redirezione dell'input e dell'output "pipelines" di comandi job control variabili e assegnamenti strutture di controllo "scripts" supporto all'uso interattivo supporto al debugging degli script

DIFFERENTI SHELL La shell non è unica, un sistema può metterne a disposizione varie Bourne shell (standard), C shell, Korn shell, L implementazione della bourne shell in Linux è bash (/bin/bash) Ogni utente può indicare la shell preferita La scelta viene memorizzata in /etc/passwd, un file contenente le informazioni di tutti gli utenti del sistema La shell di login è quella che richiede inizialmente i dati di accesso all utente Per ogni utente connesso viene generato un processo dedicato (che esegue la shell)

SHELL INTERATTIVA DI LOGIN Una shell di login è quella che si ha di fronte quando è stata completata la procedura di login (può essere esplicitamente avviata con l opzione -login). Se non è stata specificata l opzione -noprofile, tenta di leggere ed eseguire il contenuto dei file di configurazione: /etc/profile /.bash profile oppure /.bash login oppure /.profile (in questo ordine). Al termine della sessione di lavoro, se il file esiste, legge ed esegue il contenuto di /.bash logout.

USCITA DAL SISTEMA: LOGOUT Per uscire da una shell qualsiasi si può utilizzare il comando exit (che invoca la system call exit() per quel processo) Per uscire dalla shell di login logout CTRL+D (che corrisponde al carattere <EOF>) CTRL+C Per rientrare nel sistema bisogna effettuare un nuovo login

ESECUZIONE DI UN COMANDO Ogni comando richiede al SO l esecuzione di una particolare azione I comandi principali del sistema si trovano nella directory /bin Possibilità di realizzare nuovi comandi (scripting) Per ogni comando, shell genera un processo figlio dedicato alla sua esecuzione Il processo padre attende la terminazione del comando (foreground) o prosegue in parallelo (background)

FORMATO DEI COMANDI comando [argomento ] Gli argomenti possono essere: opzioni o flag (-) parametri separati da almeno un separatore Esempio: ls -l -F file1 file2 file3 Convenzione nella rappresentazione della sintassi comandi: se un opzione o un argomento possono essere omessi, si indicano tra quadre [opzione] se due opzioni/argomenti sono mutuamente esclusivi, vengono separati da arg1 arg2 quando un arg può essere ripetuto n volte, si aggiungono dei puntini: arg... opzioni parametri

IL MANUALE Esiste un manuale on-line (man), consultabile per informazioni su ogni comando Linux. Indica: formato del comando (input) e risultato atteso (output) descrizione delle opzioni possibili restrizioni file di sistema interessati dal comando comandi correlati eventuali bug per uscire dal manuale, digitare :q (quit per editor tipo vi)

IL COMMANDO MAN Il manuale è organizzato in sezioni e sottosezioni; ogni sezione è composta di pagine (logiche) Ogni pagina descrive un singolo argomento (es.: un comando) Esempio: $ man man

IL COMMANDO MAN man [opzione...] titolo... Visualizza le pagine del manuale specificate mediante i suoi parametri -s permette di specificare la sezione Esempio: $ man who... $ man -s 2 kill... $ man -s 2 intro Note: Se il numero di sezione non è specificato, viene selezionata la prima occorrenza Ogni sezione o sottosezione inizia con una pagina chiamata intro

IL COMMANDO APROPOS apropos [word...] Cerca i comandi la cui descrizione nel manuale (NAME) contiene le parole specificate (equivale a man -k) Il comando non distingue fra maiuscole e minuscole Esempio: $ apropos manual apropos (1) catman (8) help2man (1) man (1) manconv (1) mandb (8) manpath (1) mdoc.samples (7) whatis (1) whereis (1) - search the manual page names and descriptions - create or update the pre-formatted manual pages - generate a simple manual page - an interface to the on-line reference manuals - convert manual page from one encoding to another - create or update the manual page index caches - determine search path for manual pages - tutorial sampler for writing BSD manuals with -mdoc - display one-line manual page descriptions - locate the binary, source, and manual page files for a command

IL COMMANDO WHO who[...][am I] who lista il nome, terminale, e data/ora di login di tutti gli utenti correnti who am I come sopra per l utente che lo esegue Esempio: $ who root pts/0 2019-02-26 09:01 (193.206.185.230) marica pts/1 2019-02-26 09:03 (193.206.185.230) antonacci pts/2 2019-02-26 09:03 (193.206.185.230) $ who am I marica pts/1 2019-02-26 09:03 (193.206.185.230)

IL COMMANDO DATE date[ ] Modifica o stampa (nel formato specificato) la data corrente Esempio: $ date Tue Feb 26 09:07:05 UTC 2019

IL COMMANDO ECHO echo [SHORT-OPTION]... [STRING]... È un comando fondamentale usato frequentemente, p.e. negli script, ogni volta che sia necessario visualizzare del testo. Opzioni: -n non aggiunge il ritorno a capo -e indica di interpretare i comandi di escape e\o altri. -E indica di non interpretare i comandi di escape (default)

ESECUZIONE IN FOREGROUND Normalmente, dopo avere creato il processo che esegue il programma richiesto, la shell si pone in uno stato di wait, in attesa che il programma termini... dopo di che, la shell riprende la sua esecuzione per acquisire il prossimo comando: Il comando termina producento un exit code intero, che sarà disponibile in una variabile di shell, di nome: Esempio: $ ls -latr total 56 -rw-r--r-- 1 marica marica 807 Apr 4 2018.profile -rw-r--r-- 1 marica marica 3771 Apr 4 2018.bashrc -rw-r--r-- 1 marica marica 220 Apr 4 2018.bash_logout drwxr-xr-x 5 root root 4096 Jan 31 15:24.. -rwxrwxr-x 1 marica marica 3382 Feb 1 07:57 script.exp $ echo $? 0

ESECUZIONE IN BACKGROUND In questo caso la shell crea il processo che esegue il programma richiesto, ma riprende subito l esecuzione, senza aspettare che il processo termini Esempio: $ comando argomenti & $ sort.profile > /tmp/delme & [1] 4100

IL COMMANDO PS ps [opzioni] "process status": stampa alcune informazioni sui processi attivi. Opzioni: -f lista estesa -e tutti i processi Esempio: $ ps PID TTY TIME CMD 4074 pts/1 00:00:00 bash 4308 pts/1 00:00:00 ps

IL COMMANDO TOP ps produce un'immagine statica dei processi in corso, in pratica fotografa lo stato del sistema al momento in cui viene lanciata l'istruzione di monitoraggio delle esecuzioni. Se si desidera ottenere un output più particolareggiato, dinamico e aggiornabile sarà necessario utilizzare il comando top; l'output di top consente di visualizzare tutti processi correnti e le relative informazioni rilevanti come per esempio il carico sulla CPU.

JOB CONTROL Esistono vari comandi per il controllo dei processi che permettono di terminare un processo sospendere un processo far ripartire un processo sospeso mandare in background un processo di foreground portare in foreground un processo di background etc.

IL COMMANDO KILL kill [-signal] processid... Invia il segnale specificato ai processi indicati Alcuni segnali: TERM -15 Terminazione del processo (è il segnale di default) KILL -9 Terminazione del processo (non può essere ignorato nè trattato) STOP Sospensione del processo (non può essere ignorato nè trattato) CONT Ripartenza di un processo sospeso

TERMINAZIONE DI UN PROCESSO Un processo può essere terminato solo dal suo proprietario (l'utente che lo ha creato) o da root Per terminare un processo di foreground: CTRL+C Per terminare un processo di background: kill pid... kill -15 pid... kill -TERM pid... In casi estremi: kill -9 pid... Esempio: $ sleep 1000 & [1] 4318 $ kill 4318 $ [1]+ Terminated sleep 1000