KOMENDY LINUXA
| Polecenie | Opis |
|---|---|
| Informacje systemowe | |
| arch | wyświetl architekturę komputera |
| uname -m | |
| uname -r | wyświetl używaną wersję jądra |
| dmidecode -q | wyświetl sprzętowe komponenty systemowe - (SMBIOS / DMI) |
| hdparm -i /dev/hda | wypisz parametry dysku twardego |
| hdparm -tT /dev/sda | przetestuj wydajność odczytu danych z dysku twardego |
| cat /proc/cpuinfo | wyświetl informacje o procesorze |
| cat /proc/interrupts | wyświetl przerwania |
| cat /proc/meminfo | sprawdź użycie pamięci |
| cat /proc/swaps | wyświetl plik(i) wymiany (swap) |
| cat /proc/version | wypisz wersję jądra |
| cat /proc/net/dev | wyświetl interfejsy sieciowe i statystyki dotyczące nich |
| cat /proc/mounts | wyświetl zamontowane systemy plików |
| lspci -tv | wyświetl urządzenia PCI w formie drzewa |
| lsusb -tv | wyświetl urządzenia USB w formie drzewa |
| date | wypisz datę systemową |
| cal 2007 | wypisz kalendarz na rok 2007 |
| date 041217002007.00 | ustaw systemową datę i czas MMDDHHmmRRRR.SS (MiesiącDzieńGodzinaMinutyRok.Sekundy) |
| clock -w | zapisz czas systemowy do BIOS-u |
| Zatrzymywanie systemu | |
| shutdown -h now | Zatrzymaj system |
| init 0 | |
| telinit 0 | |
| shutdown -h hours:minutes & | zaplanuj zatrzymanie systemu o podanej godzinie |
| shutdown -c | anuluj zaplanowane zatrzymanie systemu |
| shutdown -r now | zrestartuj system |
| reboot | |
| logout | wyloguj się z systemu |
| Pliki i katalogi | |
| cd /home | przejdź do katalogu '/home' |
| cd .. | przejdź do katalogu o jeden poziom wyżej |
| cd ../.. | przejdź do katalogu o dwa poziomy wyżej |
| cd | przejdź do katalogu domowego |
| cd ~user | przejdź do katalogu domowego użytkownika user |
| cd - | przejdź do katalogu, w którym znajdowałeś się przed przejściem do bieżącego katalogu |
| pwd | wyświetl bieżący katalog |
| ls | wyświetl zawartość bieżącego katalogu |
| ls -F | wyświetl zawartość bieżącego katalogu z dodaniem symboli określających typ do nazw |
| ls -l | wyświetl szczegółowe informacje o plikach i katalogach w bieżącym katalogu |
| ls -a | wyświetl ukryte pliki i katalogi w bieżącym katalogu |
| ls *[0-9]* | wyświetl pliki i katalogi zawierające cyfry w nazwie |
| tree | wyświetl drzewo plików i katalogów, zaczynając od katalogu głównego (/) |
| lstree | |
| mkdir dir1 | utwórz katalog o nazwie 'dir1' |
| mkdir dir1 dir2 | utwórz dwa katalogi jednocześnie |
| mkdir -p /tmp/dir1/dir2 | utwórz drzewo katalogów |
| rm -f file1 | usuń plik o nazwie 'file1' |
| rmdir dir1 | usuń katalog o nazwie 'dir1' |
| rm -rf dir1 | usuń katalog o nazwie 'dir1' oraz rekurencyjnie całą jego zawartość |
| rm -rf dir1 dir2 | usuń dwa katalogi oraz rekurencyjnie ich zawartość |
| mv dir1 new_dir | zmień nazwę lub przenieś plik lub katalog |
| cp file1 file2 | skopiuj plik file1 do pliku file2 |
| cp dir/* . | skopiuj wszystkie pliki z katalogu dir do bieżącego katalogu |
| cp -a /tmp/dir1 . | skopiuj katalog dir1 ze całą zawartością do bieżącego katalogu |
| cp -a dir1 dir2 | skopiuj katalog dir1 do katalogu dir2 |
| ln -s file1 lnk1 | utwórz dowiązanie symboliczne do pliku lub katalogu |
| ln file1 lnk1 | utwórz "twarde" (fizyczne) dowiązanie do pliku lub katalogu |
| touch -t 0712250000 fileditest | zmodyfikuj datę i czas utworzenia pliku; jeśli plik nie istnieje, utwórz go z podaną datą i czasem (RRMMDDhhmm) |
| Wyszukiwanie plików | |
| find / -name file1 | znajdź pliki i katalogi o nazwie file1. Wyszukiwanie zaczynaj od katalogu głównego (/) |
| find / -user user1 | znajdź pliki i katalogi należące do użytkownika user1. Wyszukiwanie zaczynaj od katalogu głównego (/) |
| find /home/user1 -name "*.bin" | Znajdź wszystkie pliki i katalogi, których nazwy kończą się na '.bin'. Wyszukiwanie zaczynaj od '/home/user1' |
| find /usr/bin -type f -atime +100 | znajdź wszystkie pliki w '/usr/bin', do których ostatni dostęp miał miejsce ponad 100 dni temu |
| find /usr/bin -type f -mtime -10 | znajdź wszystkie pliki w '/usr/bin', utworzone lub zmienione w ciągu ostatnich 10 dni |
| find / -name *.rpm -exec chmod 755 '{}' \; | znajdź wszystkie pliki i katalogi, których nazwy kończą się na '.rpm', i zmień ich uprawnienia dostępu |
| find / -xdev -name "*.rpm" | znajdź wszystkie pliki i katalogi, których nazwy kończą się na '.rpm', ignorując nośniki wymienne, takie jak cdrom, floppy itp. |
| locate "*.ps" | znajdź wszystkie pliki zawierające w nazwie '.ps'. Zaleca się wcześniej wykonanie polecenia 'updatedb' |
| whereis halt | pokazuje lokalizację plików binarnych, kodu źródłowego i dokumentacji dotyczących pliku 'halt' |
| which halt | wyświetla pełną ścieżkę do pliku 'halt' |
| Montowanie systemów plików | |
| mount /dev/hda2 /mnt/hda2 | montuje partycję 'hda2' w punkcie montowania '/mnt/hda2'. Upewnij się, że istnieje katalog punktu montowania '/mnt/hda2' |
| umount /dev/hda2 | odmontowuje partycję 'hda2'. Przed wykonaniem opuść '/mnt/hda2' |
| fuser -km /mnt/hda2 | wymuszone odmontowanie partycji. Stosowane w przypadku, gdy partycja jest używana przez jakiegoś użytkownika |
| umount -n /mnt/hda2 | wykonaj odmontowanie bez zapisywania informacji w /etc/mtab. Przydatne, gdy plik ma atrybut "tylko do odczytu" lub brakuje miejsca na dysku |
| mount /dev/fd0 /mnt/floppy | montuj dyskietkę |
| mount /dev/cdrom /mnt/cdrom | montuj CD lub DVD |
| mount /dev/hdc /mnt/cdrecorder | montuj CD-R/CD-RW lub DVD-R/DVD-RW(+-) |
| mount -o loop file.iso /mnt/cdrom | zamontuj obraz ISO |
| mount -t vfat /dev/hda5 /mnt/hda5 | montuj system plików Windows FAT32 |
mount -t smbfs -o username=user,password=pass//winclient/share /mnt/share |
montuj sieciowy system plików Windows (SMB/CIFS) |
| mount -o bind /home/user/prg /var/ftp/user | "montuje" katalog w katalogu (binding). Dostępne od wersji jądra 2.4.0. Przydatne np. do udostępnienia zawartości katalogu użytkownika przez ftp przy pracy serwera ftp w "piaskownicy" (chroot), gdy nie można utworzyć dowiązań symbolicznych. |
| Przestrzeń dyskowa | |
| df -h | wyświetla informacje o zamontowanych partycjach z wyświetleniem całkowitej, dostępnej i użytej przestrzeni (Uw. tłumacza. opcja -h nie działa we wszystkich systemach *nix) |
ls -lSr |more |
wyświetla listę plików i katalogów rekurencyjnie, posortowaną rosnąco według rozmiaru, umożliwiając podział na strony |
| du -sh dir1 | oblicza i wyświetla rozmiar zajmowany przez katalog 'dir1' (Uw. tłumacza. opcja -h nie działa we wszystkich systemach *nix) |
du -sk * | sort -rn |
wyświetla rozmiar i nazwy plików i katalogów, posortowane według rozmiaru |
rpm -q -a --qf '%10{SIZE}t%{NAME}n' | sort -k1,1n |
pokazuje rozmiar zajmowanej przestrzeni dyskowej przez pliki pakietu rpm, posortowane według rozmiaru (fedora, redhat itp.) |
dpkg-query -W -f='${Installed-Size;10}t${Package}n'| sort -k1,1n |
pokazuje rozmiar zajmowanej przestrzeni dyskowej przez pliki pakietu deb, posortowane według rozmiaru (ubuntu, debian itp.) |
| Użytkownicy i grupy | |
| groupadd group_name | utwórz nową grupę o nazwie group_name |
| groupdel group_name | usuń grupę group_name |
| groupmod -n new_group_name old_group_name | zmień nazwę grupy old_group_name na new_group_name |
| useradd -c "Nome Cognome" -g admin -d /home/user1 -s /bin/bash user1 | utwórz użytkownika user1, przypisz mu jako katalog domowy /home/user1, jako powłokę /bin/bash, dodaj go do grupy admin i dodaj komentarz Nome Cognome |
| useradd user1 | utwórz użytkownika user1 |
| userdel -r user1 | usuń użytkownika user1 i jego katalog domowy |
| usermod -c "User FTP" -g system -d /ftp/user1 -s /bin/nologin user1 | zmień atrybuty użytkownika |
| passwd | zmień hasło |
| passwd user1 | zmień hasło użytkownika user1 (tylko root) |
| chage -E 2005-12-31 user1 | ustaw datę wygaśnięcia konta użytkownika user1 |
| pwck | sprawdź poprawność systemowych plików kont. Sprawdzane są pliki /etc/passwd i /etc/shadow |
| grpck | sprawdza poprawność systemowych plików kont. Sprawdzany jest plik /etc/group |
| newgrp [-] group_name | zmienia główną grupę bieżącego użytkownika. Jeśli podasz "-", sytuacja będzie identyczna z tą, w której użytkownik wylogował się i zalogował ponownie. Jeśli nie podasz grupy, główna grupa zostanie przypisana z /etc/passwd |
| Udzielanie/zmiana uprawnień do plików | |
| ls -lh | podgląd uprawnień do plików i katalogów w bieżącym katalogu |
ls /tmp | pr -T5 -W$COLUMNS |
wypisz zawartość katalogu /tmp i podziel wynik na pięć kolumn |
| chmod ugo+rwx directory1 | dodaj uprawnienia do katalogu directory1 ugo(Użytkownik Grupa Inni)+rwx(Odczyt Zapis Wykonaj) - pełne uprawnienia dla wszystkich. To samo można zrobić w ten sposób "chmod 777 directory1" |
| chmod go-rwx directory1 | odbierz grupie i wszystkim innym wszystkie uprawnienia do katalogu directory1. |
| chown user1 file1 | przypisz właściciela pliku file1 jako użytkownika user1 |
| chown -R user1 directory1 | przypisz rekurencyjnie właściciela katalogu directory1 jako użytkownika user1 |
| chgrp group1 file1 | zmień grupę właściciela pliku file1 na group1 |
| chown user1:group1 file1 | zmień właściciela i grupę właściciela pliku file1 |
| find / -perm -u+s | znajdź, zaczynając od katalogu głównego, wszystkie pliki z ustawionym SUID |
| chmod u+s /bin/binary_file | przypisz bit SUID do pliku /bin/binary_file. Daje to możliwość każdemu użytkownikowi uruchamiania pliku z uprawnieniami właściciela pliku. |
| chmod u-s /bin/binary_file | usuń bit SUID z pliku /bin/binary_file. |
| chmod g+s /home/public | przypisz bit SGID do katalogu /home/public. |
| chmod g-s /home/public | usuń bit SGID z katalogu /home/public. |
| chmod o+t /home/public | przypisz bit STIKY do katalogu /home/public. Pozwala usuwać pliki tylko właścicielom |
| chmod o-t /home/public | usuń bit STIKY z katalogu /home/public |
| Specjalne atrybuty plików | |
| chattr +a file1 | pozwól otwierać plik do zapisu tylko w trybie dopisywania |
| chattr +c file1 | pozwala jądrze na automatyczne kompresowanie/dekompresowanie zawartości pliku. |
| chattr +d file1 | wskazuje narzędziu dump, aby ignorowało ten plik podczas wykonywania kopii zapasowej |
| chattr +i file1 | robi plik niedostępnym dla jakichkolwiek zmian: edycja, usuwanie, przenoszenie, tworzenie dowiązań do niego. |
| chattr +s file1 | pozwala na bezpieczne usuwanie pliku, tj. ustawiony atrybut s oznacza, że przy usuwaniu pliku miejsce zajmowane przez plik na dysku jest wypełniane zerami, co zapobiega możliwości odzyskania danych. |
| chattr +S file1 | wskazuje, że przy zapisywaniu zmian zostanie wykonana synchronizacja, jak przy wykonaniu polecenia sync |
| chattr +u file1 | ten atrybut wskazuje, że przy usuwaniu pliku jego zawartość zostanie zachowana i w razie potrzeby użytkownik będzie mógł ją przywrócić |
| lsattr | wyświetl atrybuty plików |
| Archiwizowanie i kompresowanie plików | |
| bunzip2 file1.bz2 | dekompresuje plik 'file1.gz' |
| gunzip file1.gz | |
| gzip file1 | kompresuje plik 'file1' |
| bzip2 file1 | |
| gzip -9 file1 | skompresuj plik file1 z maksymalną kompresją |
| rar a file1.rar test_file | utwórz archiwum rar 'file1.rar' i dołącz do niego plik test_file |
| rar a file1.rar file1 file2 dir1 | utwórz archiwum rar 'file1.rar' i dołącz do niego file1, file2 i dir1 |
| unrar x file1.rar | rozpakuj archiwum rar |
| tar -cvf archive.tar file1 | utwórz archiwum tar archive.tar, zawierające plik file1 |
| tar -cvf archive.tar file1 file2 dir1 | utwórz archiwum tar archive.tar, zawierające plik file1, file2 i dir1 |
| tar -tf archive.tar | wyświetl zawartość archiwum |
| tar -xvf archive.tar | rozpakuj archiwum |
| tar -xvf archive.tar -C /tmp | rozpakuj archiwum do /tmp |
| tar -cvfj archive.tar.bz2 dir1 | utwórz archiwum i skompresuj je za pomocą bzip2(Uw. tłumacza. opcja -j nie działa we wszystkich systemach *nix) |
| tar -xvfj archive.tar.bz2 | dekompresuj archiwum i rozpakuj je(Uw. tłumacza. opcja -j nie działa we wszystkich systemach *nix) |
| tar -cvfz archive.tar.gz dir1 | utwórz archiwum i skompresuj je za pomocą gzip |
| tar -xvfz archive.tar.gz | dekompresuj archiwum i rozpakuj je |
| zip file1.zip file1 | utwórz skompresowane archiwum zip |
| zip -r file1.zip file1 file2 dir1 | utwórz skompresowane archiwum zip z dołączeniem kilku plików i/lub katalogów |
| unzip file1.zip | dekompresuj i rozpakuj archiwum zip |
| Pakiety RPM (Fedora, Red Hat i podobne) | |
| rpm -ivh package.rpm | zainstaluj pakiet z wyświetlaniem komunikatów i paska postępu |
rpm -ivh --nodeps package.rpm |
zainstaluj pakiet z wyświetlaniem komunikatów i paska postępu bez kontroli zależności |
| rpm -U package.rpm | aktualizuj pakiet bez zmiany plików konfiguracyjnych; w przypadku braku pakietu, zostanie on zainstalowany |
| rpm -F package.rpm | aktualizuj pakiet tylko jeśli jest zainstalowany |
| rpm -e package_name.rpm | usuń pakiet |
| rpm -qa | wyświetl listę wszystkich pakietów zainstalowanych w systemie |
rpm -qa | grep httpd |
spośród wszystkich pakietów zainstalowanych w systemie, znajdź pakiet zawierający w swojej nazwie "httpd" |
| rpm -qi package_name | wypisz informacje o konkretnym pakiecie |
| rpm -qg "System Environment/Daemons" | wyświetl pakiety wchodzące w skład grupy pakietów |
| rpm -ql package_name | wypisz listę plików wchodzących w skład pakietu |
| rpm -qc package_name | wypisz listę plików konfiguracyjnych wchodzących w skład pakietu |
rpm -q package_name --whatrequires |
wypisz listę pakietów wymaganych do zainstalowania konkretnego pakietu ze względu na zależności |
rpm -q package_name --whatprovides |
show capability provided by a rpm package |
rpm -q package_name --scripts |
wyświetl skrypty uruchamiane podczas instalacji/usuwania pakietu |
rpm -q package_name --changelog |
wypisz historię rewizji pakietu |
| rpm -qf /etc/httpd/conf/httpd.conf | sprawdź, do którego pakietu należy wskazany plik. Należy podać pełną ścieżkę i nazwę pliku. |
| rpm -qp package.rpm -l | wyświetla listę plików wchodzących w skład pakietu, ale jeszcze nie zainstalowanych w systemie |
rpm --import /media/cdrom/RPM-GPG-KEY |
importuj publiczny klucz podpisu cyfrowego |
rpm --checksig package.rpm |
sprawdź podpis pakietu |
| rpm -qa gpg-pubkey | sprawdź integralność zainstalowanej zawartości pakietu |
| rpm -V package_name | sprawdź rozmiar, uprawnienia, typ, właściciela, grupę, sumę MD5 i datę ostatniej zmiany pakietu |
| rpm -Va | sprawdź zawartość wszystkich pakietów zainstalowanych w systemie. Wykonuj z ostrożnością! |
| rpm -Vp package.rpm | sprawdź pakiet, który jeszcze nie jest zainstalowany w systemie |
rpm2cpio package.rpm | cpio --extract --make-directories *bin* |
wyodrębnij z pakietu pliki zawierające w swojej nazwie bin |
| rpm -ivh /usr/src/redhat/RPMS/`arch`/package.rpm | zainstaluj pakiet skompilowany z kodu źródłowego |
rpmbuild --rebuild package_name.src.rpm |
skompiluj pakiet z kodu źródłowego |
| YUM - narzędzie aktualizacji pakietów (Fedora, RedHat i podobne) | |
| yum install package_name | pobierz i zainstaluj pakiet |
| yum update | aktualizuj wszystkie pakiety zainstalowane w systemie |
| yum update package_name | aktualizuj pakiet |
| yum remove package_name | usuń pakiet |
| yum list | wypisz listę wszystkich pakietów zainstalowanych w systemie |
| yum search package_name | znajdź pakiet w repozytorium |
| yum clean packages | wyczyść cache rpm, usuwając pobrane pakiety |
| yum clean headers | usuń wszystkie nagłówki plików, których system używa do rozwiązywania zależności |
| yum clean all | wyczyść cache rpm, usuwając pobrane pakiety i nagłówki |
| Pakiety DEB (Debian, Ubuntu i podobne) | |
| dpkg -i package.deb | zainstaluj / zaktualizuj pakiet |
| dpkg -r package_name | usuń pakiet z systemu |
| dpkg -l | wyświetl wszystkie pakiety zainstalowane w systemie |
dpkg -l | grep httpd |
spośród wszystkich pakietów zainstalowanych w systemie, znajdź pakiet zawierający w swojej nazwie "httpd" |
| dpkg -s package_name | wyświetl informacje o konkretnym pakiecie |
| dpkg -L package_name | wypisz listę plików wchodzących w skład pakietu zainstalowanego w systemie |
dpkg --contents package.deb |
wyświetl listę plików wchodzących w skład pakietu, który jeszcze nie jest zainstalowany w systemie |
| dpkg -S /bin/ping | znajdź pakiet, do którego należy wskazany plik. |
| APT - narzędzie zarządzania pakietami (Debian, Ubuntu i podobne) | |
| apt-get install package_name | zainstaluj / zaktualizuj pakiet |
| apt-cdrom install package_name | zainstaluj / zaktualizuj pakiet z cdrom'a |
| apt-get update | pobierz zaktualizowane listy pakietów |
| apt-get upgrade | aktualizuj pakiety zainstalowane w systemie |
| apt-get remove package_name | usuń pakiet zainstalowany w systemie, zachowując pliki konfiguracyjne |
| apt-get purge package_name | usuń pakiet zainstalowany w systemie, usuwając pliki konfiguracyjne |
| apt-get check | sprawdź integralność zależności |
| apt-get clean | usuń pobrane archiwalne pliki pakietów |
| apt-get autoclean | usuń stare pobrane archiwalne pliki pakietów |
| Podgląd zawartości plików | |
| cat file1 | wypisz zawartość pliku file1 na standardowe urządzenie wyjścia |
| tac file1 | wypisz zawartość pliku file1 na standardowe urządzenie wyjścia w odwrotnej kolejności (ostatni wiersz staje się pierwszym itd.) |
| more file1 | podział na strony zawartości pliku file1 na standardowe urządzenie wyjścia |
| less file1 | podział na strony zawartości pliku file1 na standardowe urządzenie wyjścia, ale z możliwością przewijania w obie strony (w górę/w dół), wyszukiwania po zawartości itp. |
| head -2 file1 | wypisz pierwsze dwa wiersze pliku file1 na standardowe urządzenie wyjścia. Domyślnie wypisywanych jest dziesięć wierszy |
| tail -2 file1 | wypisz ostatnie dwa wiersze pliku file1 na standardowe urządzenie wyjścia. Domyślnie wypisywanych jest dziesięć wierszy |
| tail -f /var/log/messages | wypisuj zawartość pliku /var/log/messages na standardowe urządzenie wyjścia w miarę pojawiania się w nim tekstu. |
| Manipulacje tekstem | |
cat file | grep -i "Criteria" > result.txt |
ogólny składnia wykonywania działań przetwarzających zawartość pliku i wyprowadzania wyniku do nowego |
cat file | grep -i "Criteria" » result.txt |
ogólny składnia wykonywania działań przetwarzających zawartość pliku i wyprowadzania wyniku do istniejącego pliku. Jeśli plik nie istnieje, zostanie utworzony |
| grep Aug /var/log/messages | z pliku '/var/log/messages' wybierz i wypisz na standardowe urządzenie wyjścia wiersze zawierające "Aug" |
grep ^Aug /var/log/messages |
z pliku '/var/log/messages' wybierz i wypisz na standardowe urządzenie wyjścia wiersze zaczynające się od "Aug" |
| grep [0-9] /var/log/messages | z pliku '/var/log/messages' wybierz i wypisz na standardowe urządzenie wyjścia wiersze zawierające cyfry |
| grep Aug -R /var/log/* | wybierz i wypisz na standardowe urządzenie wyjścia wiersze zawierające "Aug", we wszystkich plikach znajdujących się w katalogu /var/log i poniżej |
| sed 's/stringa1/stringa2/g' example.txt | w pliku example.txt zamień "string1" na "string2", wynik wypisz na standardowe urządzenie wyjścia. |
sed '/^$/d' example.txt |
usuń puste wiersze z pliku example.txt |
sed '/ *#/d; /^$/d' example.txt |
usuń puste wiersze i komentarze z pliku example.txt |
echo 'test' | tr '[:lower:]' '[:upper:]' |
przekształć znaki z małych liter na wielkie |
| sed -e '1d' result.txt | usuń pierwszy wiersz z pliku example.txt |
| sed -n '/string1/p' | wyświetl tylko wiersze zawierające "string1" |
sed -e 's/ *$//' example.txt |
usuń puste znaki na końcu każdego wiersza |
sed -e 's/string1//g' example.txt |
usuń wiersz "string1" z tekstu nie zmieniając reszty |
| sed -n '1,8p;5q' example.txt | weź z pliku od pierwszego do ósmego wiersza i z nich wypisz pierwsze pięć |
| sed -n '5p;5q' example.txt | wypisz piąty wiersz |
| sed -e 's/0*/0/g' example.txt | zamień sekwencję dowolnej liczby zer jednym zerem |
| cat -n file1 | ponumeruj wiersze przy wyprowadzaniu zawartości pliku |
cat example.txt | awk 'NR%2==1' |
przy wyprowadzaniu zawartości pliku, nie wyprowadzaj parzystych wierszy pliku |
echo a b c | awk '{print $1}' |
wypisz pierwszą kolumnę. Domyślnie podziałem jest spacja/odstęp lub znak/tabulacja |
echo a b c | awk '{print $1,$3}' |
wypisz pierwszą i trzecią kolumnę. Domyślnie podziałem jest spacja/odstęp lub znak/tabulacja |
| paste file1 file2 | połącz zawartość file1 i file2 w formie tabeli: wiersz 1 z file1 = wiersz 1 kolumna 1-n, wiersz 1 z file2 = wiersz 1 kolumna n+1-m |
| paste -d '+' file1 file2 | połącz zawartość file1 i file2 w formie tabeli z separatorem "+" |
| sort file1 file2 | posortuj zawartość dwóch plików |
sort file1 file2 | uniq |
posortuj zawartość dwóch plików, nie wyświetlając powtórzeń |
sort file1 file2 | uniq -u |
posortuj zawartość dwóch plików, wyświetlając tylko unikalne wiersze (wiersze występujące w obu plikach nie są wypisywane na standardowe urządzenie wyjścia) |
sort file1 file2 | uniq -d |
posortuj zawartość dwóch plików, wyświetlając tylko powtarzające się wiersze |
| comm -1 file1 file2 | porównaj zawartość dwóch plików, nie wyświetlając wierszy należących do pliku 'file1' |
| comm -2 file1 file2 | porównaj zawartość dwóch plików, nie wyświetlając wierszy należących do pliku 'file2' |
| comm -3 file1 file2 | porównaj zawartość dwóch plików, usuwając wiersze występujące w obu plikach |
| Konwersja zestawów znaków i formatów plików | |
| dos2unix filedos.txt fileunix.txt | konwertuj plik formatu tekstowego z MSDOS na UNIX (różnica w znakach powrotu karetki) |
| unix2dos fileunix.txt filedos.txt | konwertuj plik formatu tekstowego z UNIX na MSDOS (różnica w znakach powrotu karetki) |
| recode ..HTML < page.txt > page.html | konwertuj zawartość pliku tekstowego page.txt do pliku html page.html |
recode -l | more |
wypisz listę dostępnych formatów |
| Analiza systemów plików | |
| badblocks -v /dev/hda1 | sprawdź partycję hda1 pod kątem obecności bad-blocks |
| fsck /dev/hda1 | sprawdź/przywróć integralność systemu plików linux partycji hda1 |
| fsck.ext2 /dev/hda1 | sprawdź/przywróć integralność systemu plików ext2 partycji hda1 |
| e2fsck /dev/hda1 | |
| e2fsck -j /dev/hda1 | sprawdź/przywróć integralność systemu plików ext3 partycji hda1, wskazując, że dziennik znajduje się tamże |
| fsck.ext3 /dev/hda1 | sprawdź/przywróć integralność systemu plików ext3 partycji hda1 |
| fsck.vfat /dev/hda1 | sprawdź/przywróć integralność systemu plików fat partycji hda1 |
| fsck.msdos /dev/hda1 | |
| dosfsck /dev/hda1 | |
| Formatowanie systemów plików | |
| mkfs /dev/hda1 | utwórz system plików linux na partycji hda1 |
| mke2fs /dev/hda1 | utwórz system plików ext2 na partycji hda1 |
| mke2fs -j /dev/hda1 | utwórz system plików ext3 z dziennikiem na partycji hda1 |
| mkfs -t vfat 32 -F /dev/hda1 | utwórz system plików FAT32 na partycji hda1 |
| fdformat -n /dev/fd0 | formatowanie dyskietki bez sprawdzania |
| mkswap /dev/hda3 | utworzenie przestrzeni swap na partycji hda3 |
| Przestrzeń swap | |
| mkswap /dev/hda3 | utworzenie przestrzeni swap na partycji hda3 |
| swapon /dev/hda3 | aktywuj przestrzeń swap, znajdującą się na partycji hda3 |
| swapon /dev/hda2 /dev/hdb3 | aktywuj przestrzenie swap, znajdujące się na partycjach hda2 i hdb3 |
| Tworzenie kopii zapasowych (backup) | |
| dump -0aj -f /tmp/home0.bak /home | utwórz pełną kopię zapasową katalogu /home do pliku /tmp/home0.bak |
| dump -1aj -f /tmp/home0.bak /home | utwórz inkrementalną kopię zapasową katalogu /home do pliku /tmp/home0.bak |
| restore -if /tmp/home0.bak | przywróć z kopii zapasowej /tmp/home0.bak |
rsync -rogpav --delete /home /tmp |
synchronizuj /tmp z /home |
rsync -rogpav -e ssh --delete /home ip_address:/tmp |
synchronizuj przez tunel SSH |
rsync -az -e ssh --delete ip_addr:/home/public /home/local |
synchronizuj lokalny katalog ze zdalnym katalogiem przez tunel ssh ze ściskaniem |
rsync -az -e ssh --delete /home/local ip_addr:/home/public |
synchronizuj zdalny katalog z lokalnym katalogiem przez tunel ssh ze ściskaniem |
dd bs=1M if=/dev/hda | gzip | ssh user@ip_addr 'ddof=hda.gz' |
utwórz "odcisk" lokalnego dysku w pliku na zdalnym komputerze przez tunel ssh |
| tar -Puf backup.tar /home/user | utwórz inkrementalną kopię zapasową katalogu '/home/user' do pliku backup.tar, zachowując uprawnienia |
( cd /tmp/local/ && tar c . ) | ssh -C user@ip_addr 'cd/home/share/ && tar x -p' |
kopiowanie zawartości /tmp/local na zdalny komputer przez tunel ssh do /home/share/ |
( tar c /home ) | ssh -C user@ip_addr 'cd /home/backup-home && tar x -p' |
kopiowanie zawartości /home na zdalny komputer przez tunel ssh do /home/backup-home |
tar cf - . | (cd /tmp/backup ; tar xf - ) |
kopiowanie jednego katalogu do drugiego, zachowując uprawnienia i dowiązania |
find /home/user1 -name '*.txt' | \
xargs cp -av --target-directory=/home/backup/--parents |
wyszukaj w /home/user1 wszystkie pliki, których nazwy kończą się na '.txt', i skopiuj je do innego katalogu |
find /var/log -name '*.log' | tar cv --files-from=- |bzip2 > log.tar.bz2 |
wyszukaj w /var/log wszystkie pliki, których nazwy kończą się na '.log', i utwórz z nich archiwum bzip |
| dd if=/dev/hda of=/dev/fd0 bs=512 count=1 | utwórz kopię MBR (Master Boot Record) z /dev/hda na dyskietkę |
| dd if=/dev/fd0 of=/dev/hda bs=512 count=1 | przywróć MBR z dyskietki na /dev/hda |
| CDROM | |
| cdrecord -v gracetime=2 dev=/dev/cdrom -eject blank=fast -force | clean a rewritable cdrom |
| mkisofs /dev/cdrom > cd.iso | create an iso image of cdrom on disk |
mkisofs /dev/cdrom | gzip > cd_iso.gz |
create a compressed iso image of cdrom on disk |
| mkisofs -J -allow-leading-dots -R -V "Label CD" -iso-level 4 -o ./cd.iso data_cd | create an iso image of a directory |
| cdrecord -v dev=/dev/cdrom cd.iso | burn an ISO image |
gzip -dc cd_iso.gz | cdrecord dev=/dev/cdrom - |
burn a compressed ISO image |
| mount -o loop cd.iso /mnt/iso | mount an ISO image |
| cd-paranoia -B | rip audio tracks from a CD to wav files |
cd-paranoia -- "-3" |
rip first three audio tracks from a CD to wav files |
cdrecord --scanbus |
scan bus to identify the channel scsi |
| Sieć (LAN i WiFi) | |
| ifconfig eth0 | wyświetl konfigurację interfejsu sieciowego eth0 |
| ifup eth0 | aktywuj (podnieś) interfejs eth0 |
| ifdown eth0 | deaktywuj (opuść) interfejs eth0 |
| ifconfig eth0 192.168.1.1 netmask 255.255.255.0 | ustaw interfejsowi eth0 adres ip i maskę podsieci |
| ifconfig eth0 promisc | przełącz interfejs eth0 w tryb promiscuous do "chwytania" pakietów (sniffing) |
| ifconfig eth0 -promisc | wyłącz tryb promiscuous na interfejsie eth0 |
| dhclient eth0 | aktywuj interfejs eth0 w trybie dhcp. |
| route -n | wyświetl lokalną tablicę routingu |
| netstat -rn | |
| route add -net 0/0 gw IP_Gateway | ustaw domyślny adres ip bramy (default gateway) |
| route add -net 192.168.0.0 netmask 255.255.0.0 gw 192.168.1.1 | dodaj trasę statyczną do sieci 192.168.0.0/16 przez bramę o adresie ip 192.168.1.1 |
| route del 0/0 gw IP_gateway | usuń domyślny adres ip bramy (default gateway) |
| echo "1" > /proc/sys/net/ipv4/ip_forward | zezwól na przesyłanie pakietów (forwarding) |
| hostname | wyświetl nazwę komputera |
host www.yandex.ru |
rozwiąż nazwę www.yandex.ru hosta na adres ip i odwrotnie |
| host 93.158.134.3 | |
| ip link show | wyświetl stan wszystkich interfejsów |
| mii-tool eth0 | wyświetl status i typ połączenia dla interfejsu eth0 |
| ethtool eth0 | wyświetla statystykę interfejsu eth0 z wyprowadzeniem takich informacji, jak obsługiwane i bieżące tryby połączenia |
| netstat -tupn | wyświetla wszystkie nawiązane połączenia sieciowe według protokołów TCP i UDP bez rozwiązywania nazw na adresy ip i PID'y oraz nazwy procesów zapewniających te połączenia |
| netstat -tupln | wyświetla wszystkie połączenia sieciowe według protokołów TCP i UDP bez rozwiązywania nazw na adresy ip i PID'y oraz nazwy procesów nasłuchujących portów |
| tcpdump tcp port 80 | wyświetl cały ruch na porcie TCP 80 (zwykle - HTTP) |
| iwlist scan | przeskanuj eter pod kątem dostępności bezprzewodowych punktów dostępu |
| iwconfig eth1 | wyświetl konfigurację bezprzewodowego interfejsu sieciowego eth1 |
| Sieci Microsoft Windows (SAMBA) | |
| nbtscan ip_addr | rozwiąż nazwę netbios nbtscan nie jest instalowany domyślnie we wszystkich systemach, może być konieczna ręczna instalacja. nmblookup jest zawarty w pakiecie samba. |
| nmblookup -A ip_addr | |
| smbclient -L ip_addr/hostname | wyświetl zasoby udostępnione na maszynie windows |
smbget -Rr smb:[//ip_addr[/share |
podobnie do wget może pobrać pliki z maszyn windows przez protokół smb |
mount -t smbfs -o username=user,password=pass[//winclient[/share [/mnt[/share |
zamontuj zasób smb, udostępniony na maszynie windows, w lokalnym systemie plików |
| IPTABLES (zapora sieciowa) | |
| iptables -t filter -nL | wyświetl wszystkie łańcuchy reguł |
| iptables -nL | |
| iptables -t nat -L | wyświetl wszystkie łańcuchy reguł w tabeli NAT |
| iptables -t filter -F | wyczyść wszystkie łańcuchy reguł w tabeli filter |
| iptables -F | |
| iptables -t nat -F | wyczyść wszystkie łańcuchy reguł w tabeli NAT |
| iptables -t filter -X | usuń wszystkie użytkowskie łańcuchy reguł w tabeli filter |
iptables -t filter -A INPUT -p tcp [--dport telnet -j ACCEPT |
zezwól na przychodzące połączenie przez telnet |
iptables -t filter -A OUTPUT -p tcp [--dport http -j DROP |
zablokuj wychodzące połączenia HTTP |
iptables -t filter -A FORWARD -p tcp [--dport pop3 -j ACCEPT |
zezwól na "przekazywanie" (forward) połączeń POP3 |
iptables -t filter -A INPUT -j LOG [--log-prefix "DROP INPUT" |
włącz logowanie przez jądro pakietów przechodzących przez łańcuch INPUT i dodawanie do komunikatu prefiksu "DROP INPUT" |
| iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE | włącz NAT (Network Address Translate) dla wychodzących pakietów na interfejsie eth0. Dopuszczalne przy użyciu dynamicznie przydzielanych adresów ip. |
iptables -t nat -A PREROUTING -d 192.168.0.1 -p tcp -m tcp [--dport 22 \
-j DNAT [--to-destination 10.0.0.2:22 |
przekierowanie pakietów, adresowanych do jednego hosta, na inny host |
| Monitorowanie i debugowanie | |
| top | wyświetl uruchomione procesy, zużywane przez nie zasoby i inne przydatne informacje (z automatycznym odświeżaniem danych) |
| ps -eafw | wyświetl uruchomione procesy, zużywane przez nie zasoby i inne przydatne informacje (jednorazowo) |
ps -e -o pid,args [--forest |
wypisz PID'y i procesy w formie drzewa |
| pstree | wyświetl drzewo procesów |
| kill -9 98989 | "zabij" proces o PID 98989 "na śmierć" (bez zachowania integralności danych) |
| kill -KILL 98989 | |
| kill -TERM 98989 | Korektnie zakończ proces o PID 98989 |
| kill -1 98989 | zmusz proces o PID 98989 do ponownego odczytu pliku konfiguracyjnego |
| kill -HUP 98989 | |
| lsof -p 98989 | wyświetl listę plików otwartych przez proces o PID 98989 |
| lsof /home/user1 | wyświetl listę otwartych plików z katalogu /home/user1 |
| strace -c ls > /dev/null | wypisz listę wywołań systemowych, utworzonych i otrzymanych przez proces ls |
| strace -f -e open ls > /dev/null | wypisz wywołania bibliotek |
| watch -n1 'cat /proc/interrupts' | wyświetl przerwania w czasie rzeczywistym |
| last reboot | wyświetl historię restartów systemu |
| last user1 | wyświetl historię logowania użytkownika user1 w systemie i czas jego przebywania w nim |
| lsmod | wypisz załadowane moduły jądra |
| free -m | wyświetl stan pamięci operacyjnej w megabajtach |
| smartctl -A /dev/hda | kontrola stanu dysku twardego /dev/hda przez SMART |
| smartctl -i /dev/hda | sprawdź dostępność SMART na dysku twardym /dev/hda |
| tail /var/log/dmesg | wypisz dziesięć ostatnich wpisów z dziennika ładowania jądra |
| tail /var/log/messages | wypisz dziesięć ostatnich wpisów z dziennika systemowego |
| Inne przydatne polecenia | |
| apropos …keyword | wypisuje listę poleceń, które w jakiś sposób odnoszą się do słów kluczowych. Przydatne, gdy wiesz, co robi program, ale nie pamiętasz polecenia |
| man ping | wywołaj podręcznik dotyczący pracy programu, w tym przypadku - ping |
| whatis …keyword | wyświetla opis działań wskazanego programu |
mkbootdisk [--device /dev/fd0 `uname -r` |
tworzy rozruchową dyskietkę |
| gpg -c file1 | szyfruje plik file1 za pomocą GNU Privacy Guard |
| gpg file1.gpg | deszyfruje plik file1 za pomocą GNU Privacy Guard |
wget -r www[.example[.com |
pobiera rekurencyjnie zawartość strony www[.example[.com |
wget -c www[.example[.com/file[.iso |
pobierz plik www[.example[.com/file[.iso z możliwością zatrzymania i kontynuowania później |
echo 'wget -c www[.example[.com/files[.iso' [| at 09:00 |
rozpocznij pobieranie o podanej godzinie |
| ldd /usr/bin/ssh | wypisz listę bibliotek wymaganych do działania ssh |
| alias hh='history' | przypisz alias hh do polecenia history |
Ядро działa w jednej przestrzeni adresowej. Oznacza to, że jeden moduł lub sterownik może uszkodzić całe jądro.
Ctrl + Alt + F(1-6) przełączenie między wirtualnymi konsolami. ttyN – gdzie N to numer konsoli?
Ctrl + Alt + F7 przełączenie do konsoli graficznej
startx _uruchomienie systemu X Windows (przejście do trybu graficznego)
ho -r lub runlevel _wyświetlenie poziomu działania systemu operacyjnego !!!
init n (n od 0 do 6) uruchamia jeden z poziomów działania systemu, np. 3. Oznacza to uruchomienie pliku rc3.d, który zawiera dowiązania symboliczne do plików w katalogu init.d.
Nazwa dowiązania może zaczynać się od K-zatrzymanie lub S-uruchomienie, a następnie cyfra priorytetu uruchomienia.
*************
mount /dev/hda4 mnt/hda4 -t data=<tryb dziennika> _writeback, ordered, journal?
Tworzenie nowego systemu plików ext3
1. Utworzenie partycji za pomocą parted lub fdisk
2. Sformatowanie partycji za pomocą mkfs
3. Nadanie partycji etykiety za pomocą e2label
4. Utworzenie punktu montowania za pomocą mkdir
5. Dodanie partycji do pliku etcfstab
*************
GRUB bootloader
Naciśnięcie E – wejście do interfejsu edytora wpisów. Esc – anulowanie zmian i powrót do menu.
Naciśnięcie B (po edycji) – wykonanie poleceń i uruchomienie systemu operacyjnego
Naciśnięcie C – wejście do interfejsu wiersza poleceń, wprowadzanie poleceń i naciśnięcie Enter do wykonania
help all – wyświetlenie wszystkich poleceń
Wybór jądra i naciśnięcie - a. Na końcu linii dodaj przez spację numer runlevel
less /boot/grub/grub.conf _plik bootloadera
**************************
2.1 Superblok – ważne informacje o dyskach?
dumpe2fs /dev/sda1 | grep superblock _informacje o superblokach
Użycie zapasowego superbloku: wszystkie?
1. Uruchomienie z Live CD lub płyty instalacyjnej Centos
2. fsck -y -b 8193 /dev/sda1 _Sprawdzenie dysku 8193 – numer 1 z zapasowych superbloków
3. Montowanie systemu plików
3.1 Zwykłą metodą
3.2 Jeśli się nie udało:
mount sb=8193 /dev/sda1 /mnt _Nr z. super bloku /urządzenie /punkt.montowania
4. Dodanie do /etc/fstab opcji sb (sb=8193) do naszego systemu plików
*********************
Uprawnienia dostępu do plików
123 456 789
s t rwx rwx rwx
s _bit suid – 4 (000) plik uzyskuje uprawnienia nie uruchamiającego go użytkownika, ale właściciela pliku (narzędzie passwd) musi mieć uprawnienia do wykonania? ***w shellu, czerwonym kolorem wyróżnione są pliki z bitem suid.
t _bit sticky – 1 (000)
1/2/3 _czytanie/zapis/wykonanie dla właściciela
4/5/6 _czytanie/zapis/wykonanie dla grupy właściciela
7/8/9 _czytanie/zapis/wykonanie dla pozostałych
Uprawnienie do czytania oznaczone jest cyfrą 4, do zapisu – 2, do wykonania – 1
Jeśli wszystko jest dozwolone, to cyfra uprawnień, która jest ustawiana na plik dla danej grupy = 7.
chmod [opcje] [tryb] plik – zmiana uprawnień dostępu. -v – wyświetla informacje debugowe, -R – tryb rekurencyjny, zmiana uprawnień dla wszystkich podkatalogów i plików
chmod 4755 test.txt _4 – dodanie bitu suid, 7 – pełne uprawnienia właściciela, 5 i 5 – odczyt i wykonanie dla grupy i pozostałych – ta komenda dla pliku w katalogu domowym (folderze) roota zwróciła komunikat: You have new mail in /var/spool/mail/root ?
-rwsr-xr-x root root 1 _należy czytać jako rws (zamiast x jest s) rx rx, root – właściciel, root – grupa właściciela, 1 – liczba linków
Odwrócenie: chmod 0755 test.txt lub chmod 755 test.txt – 0 przed 7 jest podstawiane domyślnie.
chmod 750 test.txt – 0 zeruje wartość uprawnień
chmod -R u=rwx,g=rx,o=x myfiles – druga metoda zmiany uprawnień dostępu dla katalogu lub pliku.
chmod -R u-x,g-x,o-x myfiles – trzecia metoda zmiany uprawnień dostępu dla katalogu lub pliku osobno dla każdej grupy użytkowników, gdzie a – właściciel, g – grupa właściciela, o – wszyscy pozostali.
chmod -R a-x myfiles – czwarta metoda zmiany uprawnień dostępu dla katalogu lub pliku dla wszystkich użytkowników. W metodach 3 i 4 można użyć -/+
chmod +x script.sh – dodanie uprawnień do wykonania dla wszystkich grup. Piąta metoda zmiany uprawnień dostępu.
bit sgid – 2 (000) – dziedziczenie uprawnień grupy właściciela. Jeśli bit sgid jest ustawiony dla katalogu, to tworzone w nim pliki podczas uruchamiania będą przyjmować identyfikator grupy katalogu, a nie grupy, do której należy właściciel pliku.
Wykonywanie programu z uprawnieniami grupy właściciela? Jak poprawnie?
bit sgid dla pliku: chmod 2755 test.txt
bit sticky – 1 (000) – jeśli jest ustawiony na katalogu, to usuwać i zmieniać nazwy plików tego katalogu może tylko właściciel tego katalogu, właściciel pliku lub root. Same uprawnienia do zapisu w tym katalogu nie są wystarczające.
chmod 1755 test.txt
chown [opcje] [właściciel]:[grupa] test.txt – zmiana właściciela pliku i grupy. -v – wyświetla informacje debugowe, -R – tryb rekurencyjny.
[właściciel]:[grupa] – to nowy właściciel i nowa grupa.
chown -R user1:user1 * – zmiana właściciela i grupy dla wszystkich plików i podkatalogów bieżącego katalogu. Nie można zmienić właściciela podkatalogu. Kto ma uprawnienia do zmiany właściciela pliku lub katalogu?
chgrp group1 file1 – zmiana grupy.
umask XXXX – zmiana (ustawienie) trybu dostępu, określa uprawnienia dostępu dla nowo tworzonych katalogów i plików!!!
Wartość umask jest odejmowana od liczby 777 dla katalogów i od liczby 666 dla plików.
umask – sprawdzenie, jaki umask jest używany w systemie, u mnie: 0022.
Nowe katalogi: 0777 - 0022 = 0755. Nowe pliki 0666 - 0022 = 0644
umask 0 1 2 3 4 5 6 7
Maska trybu dostępu r w x r w - r - x r - - - w x - w - - - x - - -
mount [opcje] [urządzenie] [punkt_montowania] – montowanie plików
umount [opcje] [urządzenie] LUB [punkt_montowania] -f wymusza odmontowanie
mount – lista zamontowanych systemów plików
Podczas montowania można ustawić uprawnienia. Można zamontować cały system plików tylko do odczytu. Nadpisuje to wcześniej przypisane uprawnienia.
zamontuj CD: mount -t iso9660 /dev/cdrom /mnt _podaj typ systemu plików (dla CD nie jest wymagane)
zamontuj obraz: mount -o loop -t iso9660 image.iso /mnt/iso nie wyszło?
iso9660 do montowania systemów Unix i CD/DVD mount -t ext3 /dev/sda4 /disk mount nie tworzy partycji.
nfs do montowania sieciowego systemu plików
vfat, ntfs do montowania partycji Windows
ufs dla Solarisa
W pliku /etc/fstab znajduje się lista systemów plików do automatycznego montowania przy uruchamianiu systemu operacyjnego
[urządzenie] [punkt_montowania] [typ_fs] [opcje] [flaga dump _przestarzała] [flaga fsck (0-nie sprawdzaj, 1-sprawdzaj, 2-sprawdzaj po sprawdzeniu 1]
cat /etc/fstab –
nazwy urządzeń:
hdc – dyski twarde
scsi -
cat /etc/mtab (mount) – wyświetlanie informacji o zamontowanych systemach plików. Nie edytować ręcznie.
/etc/filesystems – lista możliwych systemów plików. Używana przez polecenie mount do automatycznego uzupełniania, jeśli nie podano klucza -t z typem systemu plików
System plików proc istnieje tylko w pamięci RAM. Używany jako interfejs do struktur danych jądra. Jest to wirtualny system plików, ładowany do pamięci operacyjnej przy starcie systemu i nie zajmuje miejsca na dysku twardym. Wiele plików w nim można zmieniać, zmieniając tym samym parametry jądra w czasie rzeczywistym.
cat /proc/cpuinfo, meminfo, mounts, devices, filesystems, modules, version, cmdline – lista parametrów przekazywanych jądrze przy uruchamianiu. Źródło informacji o systemie!!!
Praca z plikami:
Utwórz plik tekstowy za pomocą edytora vi/vim, przekierowując wyjście polecenia echo lub cat.
Edytor vim:
i – wprowadzanie tekstu. Esc – po wprowadzeniu, powrót do trybu edycji.
: – do wpisywania poleceń dotyczących pracy z plikami, edycji ustawień i innych poleceń.
Teraz można wpisywać: w – do zapisu pliku i q do wyjścia z edytora. q! – wyjście bez zapisu.
/ – wyszukiwanie
touch test.txt – aktualizacja czasu dostępu do wcześniej utworzonego pliku (utworzenie nowego w bieżącym katalogu). Domyślnie tworzony jest plik z uprawnieniami 644. Zazwyczaj zmienia się na 775/755
touch 'z spacją'.txt – utworzenie pliku ze spacją.
CP [opcje] [źródło] [miejsce_docelowe] – kopiowanie pliku lub katalogu.
cp test.txt test1.txt – utworzenie test1 jako kopii test.txt, cp /etc/test.txt ~ – kopiowanie test.txt do katalogu domowego.
cp -r /etc/ /root/dok – kopiowanie zawartości partycji /etc/ do nowo utworzonego folderu /root/dok, nie można kopiować pliku jednocześnie z tworzeniem folderu, tylko zawartość partycji.
mv [opcje] [źródło] [miejsce_docelowe] – przenoszenie plików
mv file.txt /tmp/ – przeniesienie file.txt do /tmp/ bez zmiany nazwy
mv /tmp/file.txt ~/file2.txt – przeniesienie file.txt, zmieniając nazwę na file2.txt
Link miękki wskazuje na plik, link twardy na deskryptor indeksowy pliku.
ln [opcje] [cel] [nazwa_linku] – tworzenie linków między plikami.
ln -s file.txt lnk – utworzenie linku symbolicznego (miękkiego) lnk (przez –s) – zamiast nazwy ścieżki pliku można podać alias, wskazuje na plik.
ln file2.txt file.txt – utworzenie linku twardego – wskazuje na deskryptor indeksowy pliku
unlink lnk – usunięcie linku miękkiego
cat – wyświetlanie zawartości, less – stronicowanie/wiersz po wierszu, q – wyjście, Shift + PgUp/PgDn – nawigacja.
cat test.txt test1.txt – wyświetlenie zawartości dwóch plików.
cat test.txt test1.txt > test2.txt – połączenie plików w jeden.
cat test1.txt > test2.txt – zastąpienie zawartości pliku test2 zawartością pliku test1.
cat test1.txt >> test2.txt – dołączenie zawartości pliku test1 do zawartości pliku test2.
cat - >> test1.txt – dodawanie danych do pliku test1 bezpośrednio z powłoki. Ctrl + C – zapisanie zmian.
head -n 20 test.txt – wyświetlenie pierwszych 20 wierszy pliku (domyślnie 10 wierszy).
tail -n 20 test.txt – wyświetlenie ostatnich 20 wierszy pliku (domyślnie 10 wierszy).
nl test.txt – wyświetlenie pliku z numeracją wierszy
df [opcje] [plik] – statystyki użycia systemu plików. Można użyć df, df -h lub df -h /dev/sda1.
du [opcje] [plik] – statystyki zajmowanego miejsca na dysku. du -hs /usr/share – wyświetlenie rozmiaru katalogu /usr/share.
-h – wyświetlanie statystyk w formacie przyjaznym dla człowieka – MB itp. -s – sumowanie wyników podkatalogów i plików w nich zawartych.
echo [opcje] [ciąg] – wyświetlanie ciągu tekstu. echo -n 'blablabla' – wyświetla blablabla w tym samym wierszu.
echo 'blablabla' – wyświetla blablabla w nowym wierszu.
echo 'blablabla' > file.txt – zastąpienie zawartości pliku, echo 'blablabla' >> file.txt – dołączenie do zawartości pliku
wc [opcje] [plik] – statystyki dotyczące pliku !!!
-c – liczba bajtów w pliku, -m – liczba znaków w pliku, -l – liczba wierszy w pliku, -L – długość najdłuższego wiersza
-w – liczba słów w pliku.
find [ścieżka_wyszukiwania] [opcja_wyszukiwania] [wartość] [opcja_działania] – wyszukiwanie plików lub katalogów.
-name – nazwa pliku lub katalogu, który należy znaleźć
-type – typ obiektu: f – zwykły plik, d – katalog, b – urządzenie blokowe, c – urządzenie znakowe, p – potok nazwany, l – dowiązanie symboliczne, s – gniazdo,
-size – użycie rozmiaru pliku jako kryterium wyszukiwania
-mtime – data modyfikacji
-ctime – czas ostatniej zmiany atrybutów pliku. Jaka jest różnica między mtime a ctime?
-atime – czas ostatniego dostępu do pliku touch?
-perm 777 – z uprawnieniami dostępu 777
-print – po prostu wydrukowanie ścieżki bezwzględnej pliku
-exec – wykonanie określonej komendy dla znalezionych obiektów
find / -name pab -type d
find /tmp/ -name core -type f -print | xargs /bin/rm –f – szukamy pliku, wyświetlamy go na ekranie za pomocą print, a następnie za pomocą xargs przekazujemy jako argument do komendy rm.
find /etc/ -perm 777 -type f – szukamy plików z uprawnieniami 777 w katalogu etc.
find /etc/ -name pablish -exec rm -rf {} \; – wykonanie komendy rm -rf dla znalezionych obiektów. Zamiast {} zostanie podstawione to, co znaleźliśmy jako argument.
F4 - otwarcie pliku
Praca z katalogami:
mkdir - tworzenie, ls - wyświetlanie, mv - zmiana nazwy/przenoszenie, rm -rf - usuwanie zajętych katalogów, rmdir - usuwanie pustych !!!
mkdir –p ~/test/cda/blabla _100% utworzenie podkatalogów w katalogu domowym
mkdir -p /root/dok/dir2{dir1,dir2,dir3} –tworzenie struktury katalogu dok/dir2 z 3 sekcjami dir1-3
«.» - bieżący katalog, «..» - katalog nadrzędny, dla katalogu głównego «.» = «..»
mkdir -m 700 dir2 - jawne ustawienie uprawnień dla nowego katalogu
rm -rf* - usunięcie całej zawartości bieżącego dysku,
gdzie -r - tryb rekurencyjny, -f - wyłączenie pytań o potwierdzenie
rmdir ~/test _usunięcie pustego podkatalogu katalogu domowego
mknod _tworzenie urządzeń zorientowanych na bajty - drukarki, modemy rm _delet?
mknod _tworzenie urządzeń zorientowanych na bloki - dysk twardy?
mknod _tworzenie potoków nazwanych rm _delet?
socket można usunąć rm
ls - wyświetlanie zawartości katalogu.
ls -lhR /etc/ | less -przekierowanie wyjścia przez potok do polecenia less
-a -wszystkie, w tym ukryte pliki (zaczynające się od kropki), -h -rozmiar plików, -l -wszystkie informacje, -i -inody (deskryptory indeksowe), -R -informacje o wszystkich podkatalogach -t –sortowanie według czasu, /*.txt –wyszukiwanie według wzorca
Man ls –pomoc.
q - wyjście, Pg Up, Pg Dn - przemieszczanie. / - wprowadzenie wyszukiwania, n - w dół N - w górę
ls ../.. _wyświetlenie dwa poziomy wyżej, ls ../man _znalezienie katalogu man na poziom wyżej
ls -l /dev/sda = file /dev/sda, ls –l /root /tmp /usr …- wyświetlenie kilku plików
ls –l /etc/*/*.conf –wyszukiwanie według rozszerzenia, „pomijając” 1 poziom
ls -l /etc/[^a-w]*.conf - szuka katalogów nie zaczynających się od a-w z rozszerzeniem conf.
ls –ld –uprawnienia do bieżącego katalogu.
cd – change directory –zmiana katalogu
cd /usr/share/doc - przejście po ścieżce bezwzględnej
cd - _do poprzedniego katalogu, cd .. _na poziom wyżej, cd ~ _do katalogu domowego,
cd ~/myfiles _przejście z dowolnego miejsca do nowo utworzonego podkatalogu katalogu domowego.
grep [opcje] wzorzec [ścieżka do pliku wyszukiwania] - Wyszukiwanie według wzorca.
rpm -qa | grep chk - wyszukiwanie chk w wyjściu wszystkich zainstalowanych w systemie pakietów.
/dev/null - tzw. czarna dziura, używana do pochłaniania niepotrzebnego wyjścia programów
command > /dev/nul 2>&1 - przekierowanie wszystkich błędów do /dev/null.
/dev/zero - można użyć do utworzenia pliku o określonym rozmiarze
dd if=/dev/zero of=file.iso bs=1024 count=1024 - utworzenie pliku iso o rozmiarze 1 Mb.
/dev/random, /dev/urandom - używane przez skrypty do generowania liczb losowych.
BASH:
# - wiersz poleceń z uprawnieniami administratora
$ - wiersz poleceń zwykłego użytkownika - można pracować w katalogu domowym bez wpływu na cały system
Ctrl + C - przerwanie bieżącego procesu (sygnał SIGINT)
Ctrl + D - wyjście z interpretera poleceń
Ctrl + L - wyczyszczenie ekranu
Ctrl + Z - przeniesienie procesu do trybu tła
Alt + D - usunięcie wszystkich znaków od bieżącej pozycji do końca słowa
Alt + R - wyczyszczenie całej linii
Podwójne TAB - wszystkie dostępne polecenia
Esc + D - usunięcie od kursora do końca słowa
echo $BASH_VERSION - wersja BASH. $ - znak zmiennej, czyli wyświetlenie zmiennej BASH_VERSION.
echo $BASH - lokalizacja BASH
Format poleceń: nazwa_polecenia [flagi/ opcje] [argumenty]
./nazwa_skryptu.sh - uruchomienie skryptu z katalogu domowego
Pliki konfiguracyjne BASH
1. Lokalne - znajdują się w katalogach domowych użytkowników systemu i mają priorytet nad Globalnymi.
.bash_logout - skrypt wykonywany przy wyjściu z systemu
.bash_history - plik z historią poleceń, który jest zapisywany do pliku po wyjściu użytkownika z systemu. Można skonfigurować, aby zapisywał się natychmiast?
.bash_profile - skrypt wykonywany przy logowaniu do systemu (w niektórych systemach używany jest bashlogin)
.bashrc - skrypt wykonywany za każdym razem, gdy otwierana jest nowa powłoka. Wykonywany jest on oraz wszystkie polecenia w nim wymienione.
2. Globalne:
/etc/profile
/etc/bashrc
history - wyświetlenie historii poleceń. Liczbę wierszy określa zmienna echo $HISTSIZE, domyślnie 1000 wierszy.
history N - wyświetlenie ostatnich N wierszy.
history -d N - usunięcie wiersza N.
!! - wykonanie ostatniego wprowadzonego polecenia
!N - wykonanie polecenia N
!string - ostatnie polecenie, które zaczyna się od ciągu string
Przekierowanie wejścia/wyjścia.
Deskryptor pliku - nieujemna liczba całkowita przypisywana przez system operacyjny do pliku otwieranego przez proces. W systemie stale otwarte są 3 deskryptory plików.
Numer Nazwa Opis Komentarz
0 stdin Standardowe wejście - wprowadzanie danych z klawiatury obsługuje klawiaturę
1 stdout Standardowe wyjście - wyświetlanie na ekranie monitora obsługuje monitor
2 stderr Służy do wyświetlania komunikatów o błędach
cat file1 file3 2>err_file - błąd wyjścia nieistniejącego pliku file3, przekierowany do nowo utworzonego pliku err_file. 2 - stderr.
cat < /etc/resolv.conf - przekierowanie z pliku.
cat > file, następnie enter, a następnie z nowej linii wprowadzamy tekst. Zakończenie wprowadzania: Ctrl + c. Wprowadzony tekst został dodany do nowo utworzonego pliku file.
date > date.txt - przy przekierowaniu do pliku istniejące dane są nadpisywane.
date >> date.txt - przy przekierowaniu do pliku, dopisanie do istniejących danych.
vi <(ls /etc) - przekierowanie zawartości katalogu etc do edytora tekstu. Pod jaką nazwą zapisać otrzymany wynik?
echo -e "'ls -l /etc/[^a-w]*.conf'\n" - szuka katalogów nie zaczynających się od a-w z rozszerzeniem conf. Nie działa??? '- ?
Możliwe przekierowania:
Skąd Dokąd
stdout Plik
stdout Stderr
stdout i stderr Stdout
stdout i stderr Stderr
stdout i stderr Plik
stderr Plik
stderr Stdout
Potoki łączą standardowe wyjście jednego polecenia z wejściem innego i oznaczane są symbolem: |
ls /usr/share | wc -l - podliczenie liczby wierszy w katalogu
Builtin wbudowane polecenia bash. enable (enable -a) - wyświetlenie wszystkich (wyświetla listę poleceń)
rpm -qa | grep hist - szuka w pakietach systemu fragmentu hist, takiego nie ma, ponieważ polecenie history jest wbudowane w bash.
Podczas uruchamiania najpierw wykonywane jest wbudowane polecenie, a dopiero potem następuje jego wyszukiwanie w zmiennej $PATH
enable -n pwd - wyłączenie wbudowanego polecenia pwd. Po tym zostanie wykonane systemowe polecenie pwd znajdujące się w /bin/pwd
enable -n - lista wyłączonych wbudowanych poleceń
Zmienne
Proces macierzysty > proces potomny > proces potomny itd.
Procesy mogą kolejno przekazywać informacje o zmiennych na niższy poziom od procesu macierzystego do potomnych, ale nie odwrotnie. Proces potomny nie może przekazać niczego do procesu macierzystego.
Value=10 – tworzenie zmiennej i nadawanie jej wartości. Zmienna będzie dostępna tylko w bieżącej sesji.
Export Value=10 – teraz można używać zmiennej z innych programów.
Unset value – usuwanie zmiennej
env – wyświetlenie zmiennych środowiskowych (wyeksportowanych). Tutaj zobaczymy je dopiero po wykonaniu polecenia: Export Value
typeset – wyświetlenie zmiennych środowiskowych, w tym utworzonych przez użytkownika.
Vim script.sh, sam skrypt:
#!/bin/bash
Echo $value
./script.sh – wykonanie skryptu w katalogu domowym roota.
Shell – jest procesem macierzystym dla skryptu. Mogliśmy разрешить mu używać zmiennej eksportując ją. Lub zabronić nie eksportując jej.
Popularne zmienne: wyświetlenie echo $
$HOSTNAME – nazwa hosta
$Shell – nazwa powłoki (interpretera poleceń)
$USER – nazwa zalogowanego użytkownika
$PATH – lista katalogów systemu operacyjnego, w których odbywa się wyszukiwanie polecenia, gdy wpisujemy je w konsoli. Wyszukiwanie odbywa się sekwencyjnie w katalogach, aż do pierwszego znalezienia.
$PWD – bieżący katalog roboczy
$HOME – bieżący katalog domowy użytkownika
$UID – cyfrowy identyfikator bieżącego użytkownika
$# – liczba przekazywanych argumentów
echo $PATH – zmienna przechowująca listę katalogów w systemie
Zmienne lokalne.
$0 – zawiera nazwę uruchamianego pliku
$1 – pierwszy argument
$2 – drugi argument
$PS1 – to monit wiersza poleceń
Vim script.sh, sam skrypt:
#!/bin/bash
Echo “first arg” - $0
Echo “second arg” - $1
…
Echo “10 arg” - ${10} – zaczynając od 10. argumentu, należy podawać je w nawiasach.
./script.sh first_arg second_arg – przekazanie skryptowi 1. i 2. argumentu
Przydatne polecenia:
cat /etc/passwd – wyświetlenie listy użytkowników
pwd – wyświetlenie bieżącego katalogu. pwd [-LP]
ps aux | grep mingetty – znalezienie wszystkich procesów systemu + wyświetlenie tylko tych zawierających słowo mingetty
whoami – zwraca bieżącą nazwę użytkownika, pod którym pracuje użytkownik.
netstat -nr – do analizy sieciowej
su user1 – przełączenie na innego użytkownika. Pytanie: w jakim przypadku po zmianie użytkownika na zwykłego, ma sens polecenie: cd ~ ?
exit – powrót do wiersza poleceń roota
useradd – dodanie użytkownika – command not found przy wprowadzaniu przed startx?
Pytanie sudo useradd PPetrov – błąd już po wprowadzeniu żądanego hasła?
#passwd Uliashov – zmiana hasła z poziomu roota na dowolne
$passwd Ivanov – zmiana hasła z poziomu użytkownika na zgodne z wymaganiami bezpieczeństwa.
date – wyświetlenie systemowej daty i czasu
env – wyświetlenie zmiennych środowiskowych (wyeksportowanych)
typeset – wyświetlenie zmiennych środowiskowych, w tym utworzonych przez użytkownika.
df –h – stopień wypełnienia przestrzeni dyskowej
rm mod pcspkr – załaduje sterownik jądra z pamięci operacyjnej
modprobe pcspkr
lsmod – lista modułów
modinfo pcspkr – wyświetlenie informacji o module
Lekcja nr 4
W każdym katalogu znajdują się 2 dowiązania. Dodanie każdego podkatalogu zwiększa liczbę dowiązań o +1.
Niektórzy wyłączają swap, aby uniknąć ciągłego drgania dysków.
fdisk -l – konfiguracja dysku twardego
free – statystyki pamięci operacyjnej
vnc viewer 10.95.4.229
System DOS pozwala na utworzenie 3 partycji
Primary – zwykła
Extended – rozszerzona, wewnątrz niej można utworzyć partycję logiczną
Partycje od 1 do 4 to Primary lub Extended. Od 5 w górę – logical
swapon -a / swapoff -a – podłączanie/odłączanie swap
etoolabel ???
partprobe?
Pobierz vnc viewer
mkswap – ???
mkfs hdc1(2-6)
Jeśli zamontujesz partycję w nowym folderze, tworzone w nim pliki będą znajdować się nie w folderze, ale na zamontowanej partycji
1 free
2 cat /proc/swaps
3 swapoff -a /dev/mapper/VolGroup00-LogVol01 - ścieżka z pkt. 2
4 mkfs /dev/mapper/VolGroup00-LogVol01
5 mkdir /novyi
6 mount /dev/mapper/VolGroup00-LogVol01 /novyi
7 utwórz foldery i pliki w folderze – punkt montowania
8 umount
9 mkswap /dev/mapper/VolGroup00-LogVol01 – oznaczenie urządzenia
10 swapon -a
alias ‘fuck’ = ‘init 0’ nie robić
Montowanie systemów plików (mount) może tylko root.
Można podłączyć zdalny system plików, np. na czas backupu.
W etc/fstab można wpisać uprawnienia użytkownika do montowania określonego folderu.
Lekcja nr 6
LVM – menedżer woluminów logicznych – zobacz opis w internecie.
LV > VG – grupa > PV – hd1, … dyski fizyczne są łączone w 1 grupę. Albo odwrotnie: 1 dysk jest dzielony na wiele woluminów???. Możliwa utrata wydajności ~ 5%.
vgs, pvs, lvs
Zadanie: uzyskać wolumin logiczny. ??????????
pvcreate /dev/hdc5
PV
VG
Vgcreate VG1 /dev/hdc5 - utworzenie grupy
Lvcreate –L 100M –n DataBase VG1 - utworzenie woluminu logicznego
Ls /dev/VG1/DataBase - sprawdzamy.
Wykonujemy:
1 free
2 cat /proc/swaps
3 swapoff -a /dev/mapper/VolGroup00-LogVol01 - ścieżka z pkt. 2 - odłączono
4 lvremove /dev/mapper/VolGroup00-LogVol01 - usunięto
5 cat /proc/swaps
6 vgs – pokaże wolne miejsce free
7 lvcreate –L 100M –n MYVOL1 VolGroup00
8 mkfs /dev/VolGroup00/MYVOL1 – formatowanie
8 mount /dev/mapper/VolGroup00-MYVOL2 /novyi lub mount /dev/VolGroup00/MYVOL1 /novyi
ls –l /Dev/VolGroup00 – dowiązanie do dev/mapper/Vol…
Można zrobić natychmiastowy zrzut stanu partycji:
lvcreate –s /dev//VolGroup00/MYVOL1 –n SNAP_MYVOL1 –L 100M - zrzut to również nowa partycja. Można ją podłączyć jako partycję do punktu montowania, ale jeśli utworzysz w niej plik, nie będzie on widoczny w zrzucie
Podczas tworzenia plików w punkcie montowania lvs pokaże zmiany partycji zrzutu
Przed zmianą danych, ich historia jest zapisywana w snapshocie
Snapshot jest tworzony w tej samej grupie woluminów.
Utwórz snapshot tylko do odczytu:
lvcreate –p r –s /dev//VolGroup00/MYVOL1 –n SNAP_MYVOL1 –L 100M – nie pozwoli na zapis w punkcie montowania.
Komendy:
Ctrl + r + wpisz szukany tekst
Ctrl + u – wyczyść cały output (błąd przy wpisywaniu hasła)
Ctrl + W – wyczyść po słowach
Ctrl + L – wyczyść ekran???
Alt + . – wyświetl ostatni parametr
Ctrl + S – blokada ekranu. Ctrl + Q - odblokuj
