File Managment
Система и процессы

(Управление процессами, мониторинг, логи, диски)

    ps - просмотр всех запущенных процессов в системе. (a = процессы всех пользователей, не только текущего;
    u = показать владельца процесса и подробную информацию - расход CPU, памяти; x = показать фоновые процессы;
    -u = показать процессы конкретного пользователя; -p = показать конкретный процесс по PID)
    Пример 1: ps aux
    Пример 2: ps -u k.mmax
    Пример 3: ps -p 1234
	
    lsof - просмотр файлов и ресурсов, открытых процессами. (-i = TCP и UDP; -i TCP = только TCP; -i UDP = только UDP; -n = ip адреса;
    -i :PORT = по конкретному порту; -p = по PID; -u = конкретного пользователя; -P = не преобразовывать имена портов в имена сервисов)
    Пример 1: lsof -i -P
    Пример 2: lsof -i TCP
    Пример 3: lsof -i :443
    Пример 4: lsof -i UDP:443
    Пример 5: lsof -p 1234
    Пример 6: lsof -u k.mmax

    kill - завершение процесса по PID. (-15 = завершить корректно, SIGTERM; -9 = завершить принудительно, SIGKILL)
    Пример: kill -9 5000

    pkill - завершение процессов по имени или другим параметрам. (-15 = завершить корректно, SIGTERM; -9 = завершить принудительно, SIGKILL;
    -f = завершить все процессы по полной командной строке; -u = завершить все процессы конкретного пользователя)
    (Примечание: полная командная строка - это вся команда, которой был запущен процесс, включая аргументы)
    Пример 1: pkill -15 nginx
    Пример 2: pkill -f "python3 loop.py"
    Пример 3: pkill -u k.mmax

    pgrep - поиск процессов по имени или другим параметрам. (-f = искать по полной командной строке; -u = искать для конкретного пользователя;
    -l = показать имя процесса вместе с PID; -a = показать полную командную строку процесса вместе с PID)
    Пример 1: pgrep nginx
    (выведет PID процессов с именем nginx)
    Пример 2: pgrep -f "python3"
    (выведет PID процессов, у которых в полной командной строке есть python3)
    Пример 3: pgrep -u k.mmax
    (выведет PID процессов пользователя k.mmax)
    Пример 4: pgrep -l nginx
    (выведет PID и имя процессов nginx)
    Пример 5: pgrep -a nginx
    (выведет PID и полную командную строку процессов nginx)     

    systemctl - управление системными сервисами (нет на macOS). Обычно требует sudo
         start = запустить
         stop = остановить
         restart = перезапустить
         reload = перечитать конфигурацию сервиса
         daemon-reload = перечитать конфигурацию всех юнитов systemd
         status = статус
         enable = установить автозапуск при загрузке системы
         disable = отключить автозапуск при загрузке системы
         is-enabled = проверить включен ли автозапуск
         is-active = проверить, активен ли сервис
         list-units --type=service = cписок всех загруженных и активных сервисов
         list-units --type=service --all = список всех сервисов
    Пример 1: sudo systemctl start nginx
    Пример 2: sudo systemctl reload nginx
    Пример 3: systemctl list-units --type=service 

    journalctl - просмотр системных логов (нет на macOS). Обычно требует sudo. (-f = обновлять в реальном времени;
    -n = показать сколько-то строк с конца; -u = показать логи указанного systemd-сервиса)
    Пример: journalctl -f -u nginx -n 20

    screen - управление терминальными сессиями. (-d = не подключаться к сессии сразу, detach; -m = принудительно создать новую сессию;
    -S = указать имя сессии; -ls = показать список существующих сессий; -r = подключиться к отсоединенной сессии; -X = выполнить
    команду управления самой сессией, без подключения к ней; -X stuff = передать текст в терминал внутри сессии, без подключения к ней)
    Пример 1: screen -dmS minecraft /home/kmmax/paperMC/start.sh
    (принудительно создаем новую отсоединенную сессию с именем minecraft и запускаем в ней скрипт start.sh)
    Пример 2: screen -ls
    (выведет в консоль список всех сессий)
    Пример 3: screen -r minecraft
    (подключаемся к отсоединенной сессии с именем minecraft)
    Пример 4: screen -S minecraft -X quit
    (выполняем команду управления сессией quit, которая завершает сессию minecraft без входа в нее)
    Пример 5: screen -S minecraft -X stuff "gamemode creative kmmax"
    (выполняем команду gamemode creative kmmax внутри терминала сессии minecraft, не подключаясь к ней)	

    df - занятость дисков. (-h = человеко-читаемый формат)
    Пример: df -h
	
    du - размер файла или директории. (-h = человеко-читаемый формат; -s = только итоговый размер, для директорий;
    -a = показать файлы в выводе, по умолчанию только директории; -d = максимальная глубина отображения директорий) 
    Пример 1: du -ha ~/Documents
    Пример 2: du -h -d 2 ~/Projects

    free - использование оперативной памяти и swap (нет на macOS). (-h = человеко-читаемый формат)
    Пример: free -h

    uname - получить информацию о системе. (-a = все данные; -s = имя ядра; -r = версия ядра; 
    -n = имя компьютера в сети; -m = архитектура машины; -o = имя операционной системы)
    Пример: uname -a

    uptime - показать время работы системы, количество пользователей и среднюю нагрузку
    Пример: uptime

    top - интерактивный мониторинг процессов в реальном времени (нагрузка, память, CPU)
    Пример: top

    btop - интерактивный мониторинг процессов в реальном времени c графическим интерфейсом
    Пример: btop      

    watch - периодическое выполнение команды с обновлением вывода через заданный интервал.
    (-n = интервал обновления)
    Пример: watch -n 0.1 "ss -tulpn"

    who - кто залогинен в систему (кратко: время входа, имя пользователя, терминал)
    Пример: who

    w - кто залогинен в систему и что делает (подробно: время входа, нагрузка, активность)
    Пример: w
           
    source - загрузить и выполнить команды из файла в текущей сессии shell
    Пример: source ./start.sh
    
    crontab - утилита для управления расписанием задач в системе (не рекомендуется для macOS)
    (-l = список задач; -e = редактирование; -r = удалить все задачи; -u = задачи другого пользователя)
    Пример 1: crontab -e
    (откроет задачи текущего пользователя для редактирования)
    Пример 2: sudo crontab -u k.mmax -l
    (откроет список существующих задач пользователя k.mmax)