Login Login
MORE

WIDGETS

Widgets

Wanted articles
Who is online?
Article tools

Linux:Come fare per

From Aino Wiki

Jump to: navigation, search

Da Terminale

Visualizzare l'elenco dei processi e porte usate o in ascolto

$ netstat -pan|grep tcp

Verifica applicazioni installate

  • Per verificare se Java è installato, da finestra terminale digitare:

$ 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

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
~$

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

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)

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:

Cron status.png

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:

Cron folder right.png

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'interprete sh)

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:

Linux es uso nano 01.png

Quindi

Linux es uso nano 02.png

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!

Linux es uso nano 033.png

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

MS SQL

Link interno: SQL Server su Linux

Esplora risorse (Explore)

Visualizzazione

  • Visualizzare le cartelle nascoste (quelle il cui nome inizia col punto .aMule), digitare: <code>CTRL + H

Mappa e Link


Linux


Terminale | Windows | Windows Script (Tips)

Author