Linux:Come fare per
From Aino Wiki
Contents
[hide]- 1 Da Terminale
- 1.1 Visualizzare l'elenco dei processi e porte usate o in ascolto
- 1.2 Impostare i permessi alle cartelle
- 1.3 Per cambiare il proprietario (ownership)
- 1.4 Comprimere cartella e sottocartelle, estrazione
- 1.5 Varie
- 1.6 Quale IP
- 1.7 File System
- 1.8 Sistema
- 1.9 Applicazioni
- 2 Esplora risorse (Explore)
- 3 Mappa e Link
Da Terminale
Visualizzare l'elenco dei processi e porte usate o in ascolto
$ netstat -pan|grep tcp
Impostare i permessi alle cartelle
- Per dare ricorsivamente qualsiasi permesso ad una cartella e alle sue contenute:
$ chmod -R 770 twiki
Per cambiare il proprietario (ownership)
- Per dare ricorsivamente la proprietà del webserver user:
$ chown -R user:group /path/to/twiki
Comprimere cartella e sottocartelle, estrazione
TAR (stà per 'tape archive' [archivio a nastro]).
Sintassi:
tar [-] A --catenate --concatenate | c --create | d --diff --compare | --delete | r --append | t --list | --test-label | u --update | x --extract --get [options] [pathname ...]
Comprimere
Da terminale, ad es via SSH, supponendo di voler avere un unico file compresso con tutto il contenuto di una cartella e le sue contenute inclusi tutti i files:$ tar -cvvf fileContenutoCartelle.tar nomeCartellaPartenza/
Dare una occhiata anche al help: $ man tar
Creerà il file fileContenutoCartelle.tar con il contenuto della cartella nomeCartellaPartenza (che deve essere visibile dalla cartella corrente), le opzioni -cvvf
:
- -c crea un nuovo archivio;
- v attiva modalità 'verbosa' con descrizione dei files processati;
- f stà per 'file' e crea un nuovo file archivio o archivia su un dispositivo;
Estrarre
es. (nota l'estensione):$ tar -xzvf archive.tar.gz
Elencare
es:$ tar -tvf archive.tar
Varie
Pulire lo schermo
Analogo al comando cls
del DOS:
~$ clear
Quale IP
Per ottenere l'IP generato dal DHCP basta aprire una finestra terminale e scrivere:
~$ ifconfig
Anche se il precedente comando funziona ugualmente nei sistemi operativi basati su linux è raccomandato usare:
~$ ip addr show
File System
Permessi
Files
Mediante il comando chmod
.
Access class | Operator | Access Type |
---|---|---|
u (user) | + (add access) | r (read) |
g (group) | - (remove access) | w (write) |
o (other) | = (set exact access) | x (execute) |
a (all: u, g, and o) |
Esempi
Per assegnare a qualunque utente il diritto di lettura:
chmod a+r nomeFile
Per rimuovere il permesso di scrittura ma aggiungere quello di esecuzione a tutti gli utenti:
chmod a-w+x nomeFile
Copiare Spostare Cancellare
Copiare
Il comando è cp
seguito dal percorso e nome file sorgente e seguito dalla destinazione.
~$ cp /home/pippo/testFile /home/pippone/testFile
Spostare
Il comando è mv
seguito dal percorso e nome file sorgente e seguito dalla destinazione. Nel seguente esempio sostanzialmente si esegue rinomina un file:
~$ mv /home/pippo/testFile /home/pippo/testFileRinominato
Si può omettere il percorso sorgente se si è già nella cartella sorgente.
Per spostare tutti i files con una determinata estensione (*.BAK) in una cartella di destinazione:
~$ mv /home/pippo/*.bak /home/pippo/Cartella_di_destinazione
Cancellare
Da howtogeek.com
Per cancellare un file usare rm
mentre per una directory rmdir
~$ rm file.est ~$ rm ./Percorso/file.est ~$ rm file1.est file2.est
Si possono usare i caratteri jolly (caratteri wildcards)
# cancellare tutti i file con estensione est ~$ rm *.est # cancellare tutti i file con qualsiasi nome ma estensione di un solo carattere ~$ rm *.?
IMPORTANTE: Per evitare di cancellare più del dovuto e far si che il sistema chieda prima di cancellare, usare l'opzione i
:
~$ rm -i *.bak
Che produrrà:
~$ rm file.est rm: remove regular file 'pizza1.bak'? y rm: remove regular file 'polpetta22.bak'? n ~$
Svecchiare una cartella da file vecchi
Per rimuovere files più vecchi di n giorni (da askubuntu):
~$ find /path/to/ -type f -mtime +7 -name '*.gz' -execdir rm -- '{}' \;
Con la seguente spiegazione:
-
find
: the unix command for finding files/directories/links and etc. -
/path/to/
: the directory to start your search in. -
-type f
: only find files. -
-name '*.gz'
: list files that ends with.gz
. -
-mtime +7
: only consider the ones with modification time older than 7 days. -
-execdir ... \;
: for each such result found, do the following command in...
. -
rm -- '{}'
: remove the file; the{}
part is where the find result gets substituted into from the previous part.--
means end of command parameters avoid prompting error for those files starting with hyphen.
Cartelle dispositivi
Come accedere alla cartella che rappresenta il CDROM o DVDROM:
~$ cd /media/ cd cd cdrom
O più semplicemente
~$ cd /media/cdrom#
Dove # è un numero progressivo a partire da 0.
Se non è visibile vuol dire che è da "montare" come segue:
Montaggio dispositivo
~$ mount /media/cdrom
Ricerche
find
Ricerca in sottocartelle a partire dalla cartella corrente
find -iname "nome_file"
con iname
si ricerca in modo case insensitive.
Per effettuare una ricerca sull'intero sistema:
find / -iname "nome_file"
Per indicare un percorso relativo a partire dalla cartella corrente, fare iniziare il path col punto '.'. Inoltre nel seguente esempio si usa il carattere jolly * per fare ricerche di sottostringe di nome file:
find ./SottoCartella -iname "*.xml"
Per paginare i risultati si usa il caratere | con il parametro less
:
find ./SottoCartella -iname "*.txt" | less
altri esempi: wikihow.it
locate
E' più efficiente di 'find' ma 'locate'
va però installato:
sudo apt-get update apt-get install mlocate sudo updatedb
L'ultimo comando forza l'aggiornamento del DB sul quale agisce il comando locate
locate -i "*.jpg"
-i serve a fare ricerca case-insensitivve
Cercare all'interno dei files
Mediante l'uso di grep
grep -r -i "stringa di ricerca" /percorso/dove/
-r effettua una ricerca riscorsiva ovvero in tutte le cartelli sottostanti la cartella indicata o quella corrente
-i serve ad effettuare una ricerca case in-sensitive.
Per omettere la stringa nella quale s'è trovata l'occortenza:
grep -r -i "stringa di ricerca" /percorso | cut -d: -f1
Sistema
Utenze
Elenco degli utenti
cut -d: -f1 /etc/passwd
Aggiunta
sudo adduser new_username --- oppure sudo useradd new_username
Verifica stato password
chage -l username
Dove 'username' è da sostituire con l'username che ci serve verificare. Produrrà un output del tipo:
Last password change : May 17, 2017
Password expires : never
Password inactive : never
Account expires : never
... etc ...
Anche così:
passwd --status username
Il manuale commenta così:
"Display account status information. The status information consists of 7 fields. The first field is the user's login name. The second field indicates if the user account has a locked password (L), has no password (NP), or has a usable password (P). The third field gives the date of the last password change. The next four fields are the minimum age, maximum age, warning period, and inactivity period for the password. These ages are expressed in days."
Cambio password
Entrato con utente con maggiori diritti, es. root:
$ passwd nomeUtenteDaCambiarePassword
Per cambiare quella di altro utente:
$ sudo passwd nomeUtenteDaCambiarePassword
Verrà chiesta prima la password dell'utente corrente e successivamente quella dell'utente di cui si vuol cambiare la password ripetendola 2 volte.
CONSIGLIO:
Usare sempre l'utente SuperUser ovvero usare il camando "sudo" perché per esperienza potrebbe non esser esaustiva la procedura tralasciando altre configurazioni da aggiornare che altrimenti verrebbero tralasciate per mancanza di diritti.
Utente corrente
Usando whoami
.
Cambio utente
Da stackexchange
Usando su
$ whoami user1 $ su - user2 Password: $ whoami user2 $ exit logout
Usando sudo
, il parametro -u
consente di indicare lo usaername
$ whoami user1 $ sudo -u user2 zsh $ whoami user2
Usare la Grant di root
Da terminale, di default, l'utenza non è impostata per agire come amministratore (root), e lo si capisce dal "$" posto sulla linea comandi del terminale.
Per cambiare modalità (è necessario che l'utente sia nel gruppo degli amministratori) lanciare il seguente:
[utente@serverName cartella]$ sudo su
Dove su
stà per "Super User", notare il "$", dopo questo comando il prompt cambierà come segue:
[utente@serverName cartella]# _
Il carattere "#" conferma che ora si hanno i poteri!
Varie
Per conoscere il nome della macchina, host name:
hostname
Sulle versioni Red Hat dalla 7 in poi, per conoscere la versione (da [1]):
$ hostnamectl Static hostname: localhost.localdomain Transient hostname: status Icon name: computer-vm Chassis: vm Machine ID: d731df2da5f644b3b4806f9531d02c11 Boot ID: 384b6cf4bcfc4df9b7b48efcad4b6280 Virtualization: xen Operating System: Red Hat Enterprise Linux Server 7.3 (Maipo) CPE OS Name: cpe:/o:redhat:enterprise_linux:7.3:GA:server Kernel: Linux 3.10.0-514.el7.x86_64 Architecture: x86-64
Vedi anche: cyberciti.biz
Anche:
# cat /etc/redhat-release output: Red Hat Enterprise Linux Server release 6.9 (Santiago)
Per avere lo spazio disco libero:
df -h
L'opzione h serve ad avere una visualizzazione semplificata.
Per avere informazioni relative allo spazio dei dischi partizionati, occorre avere i diritti amministrativi:
# fdisk -l oppure $ sudo fdisk -l
Sistema a 64 o 32 bit
ls cpu
Task Schedulati
L'applicativo allo scopo è cron
. E' possibile configurare Linux per eseguire automaticamente dei task conosciuti come job.
Tali task\job a seconda dell'evento\modalità che ne scatena la loro esecuzione sono distinguibili in:
- Job regolari ad un determinato orario. Si impostano usando cron;
- Job asincroni in determinati giorni. Usando anacron;
- Job una tantum ad uno specifico orario. Usando at;
- Job eseguiti quando il sistema raggiunge una determinata soglia critica. Usando batch;
- Job eseguiti al avvio del sistema operativo.
cron
(Si fa riferimento alla guida per Linux RedHat)
Cron
è un servizio (in Unix si chiamano demoni) che abilita l'esecuzione di un task chiamato job ad un orario regolare.
Un job di questo tipo, in caso il sistema si riavvia, non sarà perso ma la sua esecuzione si postpone semplicemente sinché il sistema non ritorna ad essere operativo.
I jobs da fare eseguire a cron
sono impostati in file che corrispondono ad una tabella, essi si chiamano crontab
file. Questi files sono letti dal servizio che è chiamato crond
che eseguirà fisicamente il job.
Precondizioni
Occorre prima installare cronie:
~]# yum install cronie
Abilitare il servizio crond al boot del sistema:
~]# systemctl enable crond.service
Avviare il servizio nella sessione corrente:
~]# systemctl start crond.service
L'utente root
può sempre usare cron ma per gli altri c'è la possibilità di un controllo di accesso.
Allo scopo ci sono due files:
-
/etc/cron.allow
in cui si indicano gli utenti autorizzati; -
/etc/cron.deny
in cui si indicano gli utenti che non possono usarlo.
Utilità
Per consultare il LOG
considerando che il file di log è nella cartella /var/log
:
~]# nano cron (oppure) ~]# cat cron
Per verificare lo stato del servizio/demone crond
(quindi capire se è funzionante):
~]# /sbin/service crond status
Che restituirà in caso positivo:
Per aggiungere un Cron Jobs con Crontab.
~]# crontab -e
Questo comando aprirà un file di attività per il tuo utente in un editor di testo predefinito (di solito è vim ma può essere cambiato).
Si può modificare un file crontab di un altro utente:
~]# crontab -u username
Schedulare un job
Il modo più semplice è aprire il file crontab
che è all'interno della cartella etc
ed aggiungere il comando per la schedulazione.
La riga che si andrà ad aggiungere indicherà prima il momento della schedulazione poi l'utente ed infine lo script da eseguire.
Un esempio della riga da inserire è come segue:
0,10,20,30,40,50 17-20 15 Jun,Jul,Aug * root /usr/local/bin/my-script.sh
Vuol dire che si eseguirà lo script "my-script.sh" come utente "root", nei mesi di "Jun,Jul,Aug", non importa il giorno della settimana "*", il giorno "15" tra le ore "17" e le "20" ogni "10" minuti.
Aiuta il seguente schema preso dal contenuto iniziale del file 'crontab':
# Example of job definition: # .---------------- minute (0 - 59) # | .------------- hour (0 - 23) # | | .---------- day of month (1 - 31) # | | | .------- month (1 - 12) OR jan,feb,mar,apr ... # | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat # | | | | | # * * * * * user-name command to be executed
- il carattere '#' identifica una riga di commento;
- il carattere jolly '*' al posto di un parametro indica "qualsiasi valore";
- il '-' tra numeri interi specifica un intervallo di numeri interi;
- la ',' determina un elenco di valori CSV;
- si può creare un file di LOG specifico per una operazione aggiungendo alla fine della riga di esecuzione dello script il catrattere ">>" path/nomeFileLog.estensione .
Esempio realistico Esegue lo script alle 21 di ogni giorno
SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root # Jobs: 0 21 * * * root /home/utenteX/LocalScript/Copia_DBs_backupFiles.sh
E lo script eseguito è:
#!/bin/bash echo 'Si copiano tutti i files di DB backup su cartella condivisa in SFTP' #mv /var/opt/mssql/data/*.bak /home/utenteX/DB_Backup_Out cp /var/opt/mssql/data/*.bak /home/utenteX/DB_Backup_Out echo 'Si assegnano i diritti ai nuovi files' chmod a+r /home/utenteX/DB_Backup_Out/*.bak echo fine
Che serve a copiare tutti i files di backup del Database (*.bak) situati in /var/opt/mssql/data
.
Troubleshooting
La prima cosa da verificare è il LOG di cron quindi verificando il file /var/log/cron
per capire se il task è stato eseguito e l'errore restituito.
Nel caso ci sia un problema di "Access denied" occorre verificare inanzitutto se l'utente che eseguirà lo script ha i permessi di esecuzione sullo script stesso. Nell'immagine che segue l'utente "ciccio" può eseguire lo script Prova_cp.sh
ma non lo script Prova_cp2.sh
, basta vedere il pattern sulla colonna Rights e l'Owner del file:
Creare uno script batch
Dare una occhiata qui.
Tenendo presente che vogliamo creare uno script come in Windows creeremmo un file batch *.bat, qui in Linux l'estensione sarà *.sh.
Qui creeremo files dal terminale e non dall'interfaccia grafica.
Memo di premessa
- Per visualizzare il contenuto di un file di testo si può usare il comando cat.
- Un utile editor di test da usare dal terminale è nano.
- Un file di script ha estensione *.sh (non obbligatorio ma consigliato).
- Per eseguire un file di script si può usare il comando bash (
$ bash mio_script.sh
) - La prima riga di uno script è sempre dedicata all'interprete da utilizzare. (es.:
#!/bin/sh
per usare l'interpretesh
)
NOTA L'output di un comando/script può essere rediretto verso un file con il doppio carattere ">>", es.:
~]# bash /home/utenteX/LocalScript/Prova.sh >> /home/utenteX/Log/EsitoProva.log
Uso editor nano
..in modalità super user:
Quindi
Nel caso si esca senza aver salvato chiederà conferma.
nota per scrivere il carattere '/' usare il tasto con sotto il numero 7, se si usa invece quello nel tastierino numerico esegue l'USCITA dal programma!
ES di semplice script!
Notare il comando "echo<code>" il testo dovrebbe esser scritto usando l'apice singolo (') anche se se ne potrebbe fare a meno ma non lo interpreterebbe come testo
Applicazioni
Installare MediaWiki
Guida interna: Installazione
Verifica puntuale applicazioni installate
- Per verificare se Java è installato, da finestra terminale digitare:
<code>$ java -version
- Per verificare se Perl è installato:
$ perl -v
La cartella di default di Perl è: /usr/bin/perl
- Per verificare se python è installato:
$ whereis python
$ which python
- Per verificare se è installato MySQL:
dpkg --get-selections | grep mysql
Se lo è ecco cosa si vedrebber in output:
pino@LinuxEniack:~$ dpkg --get-selections | grep mysql mysql-client-8.0 install mysql-client-core-8.0 install mysql-common install mysql-server install mysql-server-8.0 install mysql-server-core-8.0 install php-mysql install php8.2-mysql install pino@LinuxEniack:~$
MS SQL
Link interno: SQL Server su Linux
Disinstallazione
My SQL
In UBuntu il nome del package MySQL è "mysql-server" quindi per rimuoverlo completamente usare il comando purge
$ sudo apt purge mysql-server*
Il motivo per cui si usa ‘purge‘ invece di ‘remove‘ è che il primo rimuove i files di applicazione e quelli di configurazione mentre l'ultimo rimuove solo i files relativi ai programmi.
Per rimuovere anche i Database:
- Verificare:
ls /etc/mysql
- Verificare:
sudo ls /var/lib/mysql
- Manualmente rimuovere con:
sudo rm -r /etc/mysql /var/lib/mysql
- Manualmente rimuovere il log:
sudo rm -r /var/log/mysql
(se presente)
Esplora risorse (Explore)
In Linux Ubuntu l'analogo software Esplora Risorse si chiama Nautilus
ma per poter eseguire qualsiasi opeerazione è necessario avere i diritti di amministratore ecco come fare.
Aprire una finestra terminale e semplicemente digitare:
sudo nautilus
Visualizzazione
- Visualizzare le cartelle nascoste (quelle il cui nome inizia col punto .aMule), digitare:
CTRL + H
Cartelle condivise su VMWare
(Da qui) Anche se si è impostato che la macchina virtuale userà una cartella condivisa per un baco di VMWare questo non funzionerà, da macchina virtuale avviata togliere la condivisione ed applicare la modifica poi reimpostare la condivisione e riapplicare.
La cartella condivisa sarà visibile sotto la cartella /mnt/hgfs/
Per rendere definitiva la modifica prima eseguire i seguenti comandi allo scopo di verifica:
sudo mkdir -p /mnt/hgfs/ sudo /usr/bin/vmhgfs-fuse .host:/ /mnt/hgfs/ -o subtype=vmhgfs-fuse,allow_other
Indine, aggiungere al file /etc/fstab
vmhgfs-fuse /mnt/hgfs fuse defaults,allow_other 0 0
Mappa e Link
Linux | Installazione MediaWiki