aaa
u0.1
cat
u0.3
chmod
u0.5
chown
u0.6
cp
u0.7
date
u0.8
ed
u0.9
kill
u0.10
ln
u0.11
login
u0.12
ls
u0.13
man
u0.14
mkdir
u0.15
more
u0.16
ps
u0.17
rm
u0.18
shell
u0.19
touch
u0.20
tty
u0.21
aaa, bbb, ccc - programmi elementari avviabili direttamente dal kernel
aaa |
bbb |
ccc |
aaa e bbb si limitano a visualizzare una lettera, rispettivamente «a» e «b», attraverso lo standard output, a intervalli regolari. Precisamente, aaa lo fa a intervalli di un secondo, mentre bbb a intervalli di due secondi. Il lavoro di aaa e di bbb si conclude dopo l'emissione, rispettivamente, di 60 e 30 caratteri, pertanto nel giro di un minuto di tempo si esaurisce il loro compito.
Il programma ccc è diverso, ma nasce per lo stesso scopo: controllare la gestione dei processi di os16. Questo programma si limita ad avviare, aaa e bbb, come propri processi-figli, rimanendo in funzione, senza fare nulla. Pertanto, se si usa ccc, il suo processo deve essere eliminato in modo esplicito, perché da solo non si concluderebbe mai.
Questi programmi sono indicati soprattutto per l'uso di os16 nella modalità interattiva che precede il funzionamento normale del sistema operativo, per la verifica della gestione dei processi.
applic/crt0.s
[i190.1.9]
applic/aaa.c
[i190.1.2]
applic/bbb.c
[i190.1.3]
applic/ccc.c
[i190.1.5]
Vedere aaa(1) [u0.1].
cat - emissione del contenuto di uno o più file attraverso lo standard output
cat [file]... |
cat legge il contenuto dei file indicati come argomento e li emette attraverso lo standard output, concatenati assieme in un unico flusso.
applic/crt0.s
[i190.1.9]
applic/cat.c
[i190.1.4]
Vedere aaa(1) [u0.1].
chmod - cambiamento della modalità dei permessi dei file
chmod mod_ottale file... |
chmod cambia la modalità dei permessi associati ai file indicati, in base al numero ottale indicato come primo argomento.
Questa versione di chmod non permette di indicare la modalità dei permessi in forma simbolica.
applic/crt0.s
[i190.1.9]
applic/chmod.c
[i190.1.6]
chown(1) [u0.6].
chown - cambiamento del proprietario di un file
chown nome_utente file... |
chown uid file... |
chown cambia l'utente proprietario dei file indicati. Il nuovo proprietario da attribuire può essere indicato per nome o per numero.
os16 non gestisce i gruppi, pertanto si può intervenire soltanto sull'utente proprietario dei file.
applic/crt0.s
[i190.1.9]
applic/chown.c
[i190.1.7]
chmod(1) [u0.5].
cp - copia dei file
cp file_orig file_nuovo... |
cp file... directory_dest... |
cp copia uno o più file. Se l'ultimo argomento è costituito da una directory esistente, la copia produce dei file con lo stesso nome degli originali, all'interno della directory; se l'ultimo argomento non è una directory già esistente, ci può essere un solo file da copiare, intendendo che si voglia creare una copia con quel nome specificato.
Non è possibile copiare oggetti diversi dai file puri e semplici; quindi, la copia ricorsiva di una directory non è ammissibile.
applic/crt0.s
[i190.1.9]
applic/cp.c
[i190.1.8]
date - visualizzazione o impostazione della data e dell'ora di sistema
date [MMGGhhmm[[SS]AA]] |
Se si utilizza il programma date senza argomenti, si ottiene la visualizzazione della data e dell'ora attuale del sistema operativo. Se si indica una sequenza numerica come argomento, si intende invece impostare la data e l'ora del sistema. In tal caso va indicato un numero preciso di cifre, che può essere di otto, dieci o dodici. Se si immettono otto cifre, si sta specificando il mese, il giorno, l'ora e i minuti dell'anno attuale; se si indicano dieci cifre, le ultime due rappresentano l'anno del secolo attuale; se si immettono dodici cifre, l'anno è indicato per esteso nelle ultime quattro cifre.
#
date 123123592012
[Invio]
Imposta la data di sistema al giorno 31 dicembre 2012, alle ore 23:59.
applic/crt0.s
[i190.1.9]
applic/date.c
[i190.1.10]
ed - creazione e modifica di file di testo
ed |
ed è un programma di creazione e modifica di file di testo, che consente di operare su una riga alla volta.
ed opera in due modalità di funzionamento: comando e inserimento. All'avvio, ed si trova in modalità di comando, durante la quale ciò che si inserisce attraverso lo standard input viene interpretato come un comando da eseguire. Per esempio, il comando 1i richiede di passare alla modalità di inserimento, immettendo delle righe a partire dalla prima posizione, spostando quelle presenti in basso. Quando ci si trova in modalità di inserimento, per poter passare alla modalità di comando si introduce un punto isolato, all'inizio di una nuova riga.
Per il momento, in questa pagina di manuale, si omette la descrizione completa dell'utilizzo di ed.
La digitazione da tastiera viene interpretata da ed in modo letterale. Pertanto, anche la cancellazione, [Backspace], benché visivamente faccia indietreggiare il cursore, in realtà introduce il codice <DEL>. In fase di inserimento ciò comporta la scrittura di tale codice; in modalità di comando, ciò rende errato l'inserimento.
Il file che si intende elaborare con ed viene caricato o creato completamente nella memoria centrale. Dal momento che os16 consente a ogni processo di gestire una quantità molto limitata di memoria, si può lavorare soltanto con file di dimensioni estremamente ridotte.
Questa edizione di ed è stata scritta originariamente da David I. Bell, per sash (una shell che include varie funzionalità, da compilare in modo statico). Successivamente, il codice è stato estrapolato da sash e reso indipendente, per gli scopi del sistema operativo ELKS (una versione a 16 bit di Linux). Dalla versione estratta per ELKS è stata ottenuta quella di os16, con una serie di modifiche apportate da Daniele Giacomini, tra cui risulta particolarmente evidente il cambiamento dello stile di impaginazione del codice.
applic/crt0.s
[i190.1.9]
applic/ed.c
[i190.1.11]
shell(1) [u0.19].
kill - invio di un segnale ai processi
kill -s nome_segnale pid... |
kill -l |
Il programma kill consente di inviare un segnale, indicato per nome, a uno o più processi, specificati per numero.
|
Non è possibile indicare il segnale per numero, perché lo standard definisce i nomi di un insieme di segnali necessari, ma non stabilisce il numero, il quale può essere attribuito liberamente in fase realizzativa.
os16 non consente ai processi di attribuire azioni alternative ai segnali; pertanto, si possono ottenere solo quelle predefinite. Tutto quello che si può fare è, eventualmente, bloccare i segnali, esclusi però quelli che non sono mascherabili per loro natura.
applic/crt0.s
[i190.1.9]
applic/kill.c
[i190.1.14]
ln - collegamento dei file
ln file_orig file_nuovo... |
ln file... directory_dest... |
ln crea il collegamento fisico di uno o più file. Se l'ultimo argomento è costituito da una directory esistente, si producono collegamenti con gli stessi nomi degli originali, all'interno della directory; se l'ultimo argomento non è una directory già esistente, ci può essere un solo file da collegare, intendendo che si voglia creare un collegamento con quel nome specificato.
Essendo disponibile soltanto la creazione di collegamenti fisici, questi collegamenti possono essere collocati soltanto all'interno del file system di quelli originali, senza contare eventuali innesti ulteriori.
Non è possibile creare dei collegamenti simbolici, perché os16 non sa gestirli.
applic/crt0.s
[i190.1.9]
applic/ln.c
[i190.1.15]
login - inizio di una sessione presso un terminale
login |
login richiede l'inserimento di un nominativo-utente e di una parola d'ordine. Questa coppia viene verificata consultando il file /etc/passwd
e se coincide: vengono cambiati i permessi e la proprietà del file di dispositivo del terminale di controllo; viene cambiata la directory corrente in modo da farla coincidere con la directory personale dell'utente; viene avviata la shell, indicata sempre nel file /etc/passwd
per quel tale utente, con i privilegi di questo. La shell, avviata così, va a rimpiazzare il processo di login.
Il programma login è fatto per essere avviato da getty, non avendo altri utilizzi pratici.
|
applic/crt0.s
[i190.1.9]
applic/login.c
[i190.1.16]
ls - elenco del contenuto delle directory
ls [opzioni] [file]... |
ls elenca i file e le directory indicati come argomenti della chiamata. Se non vengono indicati file o directory da visualizzare, si ottiene l'elenco del contenuto della directory corrente; inoltre, questa realizzazione particolare di ls, se si indica come argomento solo una directory, ne mostra il contenuto, altrimenti, se gli argomenti sono più di uno, mostra solo i nomi richiesti, eventualmente con le rispettive caratteristiche se è stata usata l'opzione -l.
|
Dal momento che os16 non considera i gruppi, quando si usa l'opzione -l, il nome del gruppo a cui appartiene un file o una directory, non viene visualizzato.
applic/crt0.s
[i190.1.9]
applic/ls.c
[i190.1.17]
man - visualizzazione delle pagine di manuale
man [sezione] pagina |
man visualizza la pagina di manuale indicata come argomento, consentendone lo scorrimento in avanti. La «pagina» viene cercata tra le sezioni, a partire dalla prima. In caso di omonimie tra sezioni differenti, si può specificare il numero della sezione prima del nome della pagina.
Le pagine di manuale di os16 sono semplicemente dei file di testo, collocati nella directory /usr/share/man/
, con nomi del tipo pagina.n
, dove n è il numero della sezione.
applic/crt0.s
[i190.1.9]
applic/man.c
[i190.1.18]
cat(1) [u0.3].
mkdir - creazione di directory
mkdir [-p] [-m mod_ottale] [directory]... |
mkdir crea una o più directory, corrispondenti ai nomi che costituiscono gli argomenti.
|
applic/crt0.s
[i190.1.9]
applic/mkdir.c
[i190.1.19]
more - visualizzazione di file sullo schermo, permettendo il controllo dello scorrimento dei dati, ma in un solo verso
more file... |
more visualizza i file indicati come argomenti della chiamata, sospendendo lo scorrimento del testo dopo un certo numero di righe, consentendo all'utente di decidere come proseguire.
Quando more sospende lo scorrimento del testo, è possibile introdurre un comando, composto da un solo carattere, tenendo conto che ciò che non è previsto fa comunque proseguire lo scorrimento:
|
applic/crt0.s
[i190.1.9]
applic/more.c
[i190.1.20]
cat(1) [u0.3].
ps - visualizzazione dello stato dei processi elaborativi
ps |
ps visualizza l'elenco dei processi, con le informazioni disponibili sul loro stato. L'elenco è provvisto di un'intestazione, come si vede nell'esempio seguente:
pp p pg id id rp tty uid euid suid usage s iaddr isiz daddr dsiz sp name 0 0 0 0000 0 0 0 00.31 r 10500 eff8 00500 0000 ffca os16 kernel 0 1 0 0000 0 0 0 00.15 s 2f500 3200 32700 3300 2b8c /bin/init 1 2 2 0500 1001 1001 1001 00.15 s 25700 3900 29000 3400 2f8c /bin/shell 1 3 3 0501 0 0 0 00.07 s 22600 3100 38e00 3400 2556 /bin/login 2 4 2 0500 1001 1001 1001 00.03 R 1f500 2b00 3c200 3400 3172 /bin/ps |
La prima colonna, con la sigla «ppid», ovvero parent pid, riporta il numero del processo genitore; la seconda, con la sigla «pid», process id, indica il numero del processo preso in considerazione; la terza, con la sigla «pgrp», process group, indica il gruppo a cui appartiene il processo; la quarta colonna, «tty», indica il terminale associato, ammesso che ci sia, come numero di dispositivo, ma in base sedici. Le colonne «uid», «euid» e «suid», riguardano l'identità dell'utente, per conto del quale sono in funzione i processi, rappresentando, nell'ordine, l'identità reale (real user id), quella efficace (effective user id) e quella salvata precedentemente (saved user id).
La colonna «usage» indica il tempo di utilizzo della CPU; la colonna «s» indica lo stato del processo, il cui significato può essere interpretato con l'aiuto della tabella successiva:
|
Le colonne «iaddr» e «isiz» indicano l'indirizzo iniziale e l'estensione dell'area codice del processo, in memoria; le colonne «daddr» e «dsiz» indicano l'indirizzo iniziale e l'estensione dell'area dati del processo, in memoria. La colonna «sp» indica il valore dell'indice della pila dei dati (stack pointer).
L'ultima colonna indica il nome del programma, assieme al suo percorso, con il quale il processo è stato avviato.
L'elenco dei processi include anche il kernel, il quale occupa correttamente la prima posizione (processo zero).
ps trae le informazioni sullo stato dei processi da un file di dispositivo speciale: /dev/kmem_ps
.
applic/crt0.s
[i190.1.9]
applic/ps.c
[i190.1.22]
rm - cancellazione di file
rm file... |
rm consente di cancellare i file indicati come argomento.
Non è possibile eseguire la cancellazione ricorsiva di una directory.
applic/crt0.s
[i190.1.9]
applic/rm.c
[i190.1.23]
unlink(2) [u0.42].
shell - interprete dei comandi
shell |
shell è l'interprete dei comandi di os16. Di norma viene avviato da login, in base alla configurazione contenuta nel file /etc/passwd
.
shell interpreta i comandi inseriti; se si tratta di un comando interno lo esegue direttamente, altrimenti cerca e avvia un programma con il nome corrispondente, rimanendo in attesa fino alla conclusione del processo relativo, per riprendere poi il controllo.
L'interpretazione della riga di comando è letterale, pertanto non c'è alcuna espansione di caratteri speciali, variabili di ambiente o altro; inoltre, non è possibile eseguire script.
A volte, quando un processo avviato da shell termina di funzionare, il processo di shell non viene risvegliato correttamente, rendendo inutilizzabile il terminale. Per ovviare all'inconveniente, si può premere la combinazione [Ctrl c], con la quale viene inviato il segnale SIGINT a tutti i processi del gruppo associato al terminale.
Anche il fatto che un segnale generato con una combinazione di tasti si trasmetta a tutti i processi del gruppo associato al terminale è un'anomalia, tuttavia fa parte delle particolarità dovute alla semplificazione di os16.
applic/crt0.s
[i190.1.9]
applic/shell.c
[i190.1.24]
input_line(3) [u0.60].
touch - creazione di un file vuoto oppure aggiornamento della data di modifica
touch file... |
touch crea dei file vuoti, se quelli indicati come argomento non sono esistenti; altrimenti, aggiorna le date di accesso e di modifica, sulla base dello stato dell'orologio di sistema.
Non è possibile attribuire una data arbitraria; inoltre, a causa della limitazione del tipo di file system utilizzato, non è possibile distinguere tra date di accesso e modifica dei file.
applic/crt0.s
[i190.1.9]
applic/touch.c
[i190.1.25]
tty - nome del file di dispositivo del terminale associato allo standard input
tty |
Il programma tty individua il dispositivo del terminale associato allo standard input e lo traduce in un percorso che descrive il file di dispositivo corrispondente (ovvero il file di dispositivo che dovrebbe corrispondergli)
applic/crt0.s
[i190.1.9]
applic/tty.c
[i190.1.26]
«a2» 2013.11.11 --- Copyright © Daniele Giacomini -- appunti2@gmail.com http://informaticalibera.net