ls --sort=time | tac - arata subiect_1..50 in ordine crescatoare
for i in {1..50}; do dd if=/dev/urandom of=subiect_$i bs=12M count=1; done - creeaza subiect_1..50 fiecare de 12 MB
ps -u "$USER" --sort -%mem | head -6 | tail -5 | awk '{print $1}' | xargs renice -n 15 -p - primele 5 procese ale userului curent dupa ramii folositi si schimba-le nice in 15
Folosind fisierele secret.o, second_secret.o si main.c, creati un Makefile care sa
contina o regula de build pentru compilarea unui executabil main ce poate fi executat si sa
afiseze urmatorul output:
Sum: 12
Dif: -2
Product: -24
Adaugati o regula run la Makefile pentru executarea binarului obtinut la subpunctul
precedent. Daca binarul nu exista acesta va fi creat in acelasi mod ca la subpunctul
precedent (binarul va fi creat doar daca el nu exista deja).
Creati o regula de clean care sa stearga executabilul main. Pentru a rezolva acest
exercitiu, nu aveti voie sa faceti nicio modificare fisierului clean existent deja in arhiva (el nu
poate fi sters, redenumit, etc.).
.PHONY: clean
main: main.c secret.o second_secret.o
gcc main.c secret.o second_secret.o -o main
run: main
./main
clean:
rm -f main
In fisierul company_emails.txt exista mai multe siruri de caractere pe cate un rand
fiecare. Filtrati folosind o expresie regulata adresele de email valide din fisier. Afisati de
asemenea numarul de adrese valide. Pentru simplitate, consideram ca o adresa valida este
de forma “username@domain.top-level-domain”, unde: username-ul poate contine litere
mici, mari, cifre, ‘.’ si ‘_’ si incepe cu o litera; domeniul poate contine litere mici si mari;
domeniul top-level este o grupare de 2-4 litere mici. Exemplu de adresa email valida:
“John_Doe.32@hotmail.org”.
(([a-zA-Z]{1}([a-zA-Z0-9._]*))@([a-zA-Z]+)\.([a-zA-Z]{2,4}))\n
grep -E '^[a-zA-Z][a-zA-Z0-9._]*@[a-zA-Z]+\.[a-z]{2,4}$' company_emails.txt > filtered.txt
Pentru adresele de email salvate in fisierul vaild_emails.txt, inlocuiti domeniul
adreselor cu “christmasparty” (nu si top-level-domain) si redirectati output-ul acestei
comenzi in fisierul christmas_emails.txt.
sed -E 's/@[a-zA-Z]+\./@christmasparty./g' valid_emails.txt > christmas_emails.txt
Creati utilizatorul lambda.
Schimbati shell-ul utilizatorului lambda in zsh.
Ca utilizatorul lambda, creati un fisier numit “hot_potato” si schimbati permisiunile
sale astfel incat utilizatorul care il detine sa aiba drepturi complete asupra sa, grupul care il
detine sa poata scrie si restul utilizatorilor sa il poata executa.
Ca utilizatorul lambda, schimbati utilizatorul care detine fisierului “hot_potato” in
root.
sudo adduser lambda
sudo apt install zsh
sudo chsh -s $(which zsh) lambda
su - lambda
touch hot_potato
chmod 721 hot_potato
su - student
sudo visudo # adaugat o linie precum lambda ALL=(ALL:ALL) ALL
su - lambda
sudo chown root hot_potato
Afisati adresele IP ale tuturor nodurilor prin care treceti pentru a ajunge la
dns.google.
Afisati adresa IPv6 asociata site-ului wikipedia.com.
Afisati toate porturile TCP deschise ale sistemului.
Afisati doar ruta implicita de retea.
Aflati adresa IP a stackoverflow.com folosind un query DNS la 8.8.8.8
sudo apt install traceroute
traceroute dns.google
host wikipedia.com | grep “IPv6”
ss -tl
ip r s | grep default
dig @8.8.8.8 stackoverflow.com
Realizati un script in bash care sa creeze X fisiere in directorul Y (daca nu exista
trebuie sa fie creat), fiecare avand dimensiunea de Z in kilobytes. X, Y si Z vor fi primite ca
argumente ale script-ului.
Creati un script in bash care sa verifice conectivitatea la un IP primit ca argument si
sa scrie intr-un fisier numit ye$$ stringul “DA” in cazul in care se efectueaza cu succes si
stringul “NU” in caz contrar.
#!/bin/bash
num_files=$1
output_directory=$2
file_size_kb=$3
mkdir -p "$output_directory"
for ((i = 1; i <= num_files; i++)); do
file_name="$output_directory/file_$i.txt"
dd if=/dev/zero of="$file_name" bs=1024 count="$file_size_kb"
echo "File $file_name created with size $file_size_kb KB"
done
#!/bin/bash
ping -c 4 $1 > /dev/null 2>&1
if [ $? -eq 0 ]; then
echo "DA"> ‘ye$$’
else
echo "NU"> 'ye$$'
fi
Determinati numarul de cache-uri L1, L2 si L3 disponibile.
Determinati daca procesorul are sau nu instructiuni speciale pentru accelerarea
criptarii AES.
Determinati numarul de placi video prezente pe sistem.
Determinati driver-ul folosit de placa de retea.
Determinati ce tip de hypervisor este folosit pentru masina virtuala pe care va aflati.
lscpu | grep “L[1-3].*cache”
lscpu | grep -o aes
lshw -c display
lspci -vvv | grep Ethernet -A 20 | grep driver | head -n1
lscpu | grep Hypervisor
Afisati toate procesele de pe sistem impreuna cu PID-ul lor, sub forma arborescenta.
Afisati pentru fiecare proces al utilizatorului root, urmatoarele atribute: PID-ul,
PPID-ul, utilizatorul ce le-a creat, si comanda cu care a fost pornit.
Afisati toate PID-urile al carui PPID-ul este egal cu 1.
Afisati PID-ul shell-ului curent.
Sortati in ordinea consumului de memorie procesele utilizatorului root. Afisati
primele 5 procese.
pstree -p
sudo ps -u root -o pid,ppid,user,cmd
pgrep -P 1
echo $$
ps --no-header -u root -o pid,user,%mem | sort -nrk3 | head -n5
Configurati numele si mail-ul vostru pentru a folosi git in terminal.
Creati directorul "Elevi". Initializati directorul ca un repository de git.
In interiorul directorului creati un fisier numit Haralambie, in care sa scrieti
“Romana: 8,5 | Matematica: 9,5 | Informatica: 10”.
Faceti un commit cu fisierul creat, cu mesajul “Elev adaugat” si afisati istoricul
commit-urilor.
git config --global user.name
git config --global user.email
mkdir Elevi
cd Elevi
git init
echo “Romana: 8,5 | Matematica: 9,5 | Informatica: 10” > Haralambie
git add Haralambie
git commit -m “Elev adaugat”
git log