Шпаргалка по командам linux (ubuntu, debian)

Просто рабочая шпаргалка по консоли linux (в основном ubuntu-подобному). Есть как простые моменты так и достаточно специфичные. C расчетом на то, что кому-то поможет через поиск найти что-то нужное в нужный момент.
  • Перезагрузка из ssh: shutdown -r now
  • Проверка работы почты
    • порт sendmail netstat -tulpn | grep ':25 ' (lsof|grep :smtp)
    • (echo Subject: test; echo; echo test)|/usr/sbin/sendmail -Am -i -v mail@gmail.com
    • echo "test-body" | mailx -s "test-subject" mail@gmail.com
    • telnet alt4.gmail-smtp-in.l.google.com 25
    • mail mail@gmail.com -s sendmailtest
                                    then pushed ctrl-D
  • Память ОЗУ с разбивкой по типам vmstat -s (аналог cat /proc/meminfo).
  • Список всех заданий cron  for user in $(cut -d':' -f1 /etc/passwd); do crontab -u $user -l; done :
    • либо список  cd / && run-parts --test /etc/cron.daily
    • отработка cd / && run-parts --report /etc/cron.daily
    • cron линукса лежит в/etc/cron.daily а его логи в /var/log/syslog
  • Запуск logrotate отдельно logrotate -f /etc/logrotate.conf
  • Запуск logwatch /usr/sbin/logwatch --output mail
  • Проверка занимаемого места apt install ncdu -> ncdu /
    • ИЛИ по-другому проверим место du -hx --max-depth=1 / или du -sh /var/log/* | sort -hr
  • Как отлаживать программыДля понимания причины добавляем в вызов запуска сервиса слежение за ним через strace с записью лога в файл. Для этого достаточно добавить полный путь до этой утилиты и набор ключей в строку запуска сервиса, напримерExecStart=/usr/bin/strace -f -ff -tt -o /tmp/strace.log <Ориг. команда запуска сервиса>   Собственно так можно дебажить любое приложение. После перезагрузки смотрим в указанный нами файл, чтобы понять на чем сломалось.
  • Файл крона находится по адресу например /etc/cron.daily/logrotate
  • Отладка php-fpm /usr/sbin/php-fpm7.0 --nodaemonize --fpm-config /etc/php/7.0/fpm/php-fpm.conf
  • Проверка nginx nginx -t
  • Вывод модулей nginx nginx -V, анлог :
    • nginx -V 2>&1|xargs -n1|grep module
    • $ A=`nginx -V 2>&1`;B=`echo $A|sed 's/ --/# --/g'|tr '#' '\n'|sed -n '/^ --/p'|sort`;printf "$A"|head -2;printf "configure arguments:\n$B\n"
  • ifconfig - сетевые карты
  • top - процессы
  • Свободная память cat /proc/meminfo: Результат работы:

MemTotal:       16376892 kB
MemFree:         2200444 kB
Buffers:          480652 kB
Cached:         12708152 kB
SwapCached:            0 kB
Active:          1958840 kB
Inactive:       11521124 kB

  • Как видим, 11 Гб (11521124 kB), являются неактивной памятью и 1.95 Гб (1958840 kB), реально используется, т.е. является активной. Значит, в моем случае, избыточного потребления нет.
  • Прослушиваемые порты netstat -tuwpln пример для весты:
    • root@account:~# netstat -tuwpln
    • Active Internet connections (only servers)
    • Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
    • tcp        0      0 0.0.0.0:143             0.0.0.0:*               LISTEN      1/systemd
    • tcp        0      0 188.188.188.51:80       0.0.0.0:*               LISTEN      1131/nginx: worker
    • tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      32407/exim4
    • tcp        0      0 0.0.0.0:8083            0.0.0.0:*               LISTEN      2242/nginx: master
    • tcp        0      0 127.0.0.1:8084          0.0.0.0:*               LISTEN      1131/nginx: worker
    • tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      31555/sshd
    • tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      32407/exim4
    • tcp        0      0 0.0.0.0:2525            0.0.0.0:*               LISTEN      32407/exim4
    • tcp        0      0 0.0.0.0:993             0.0.0.0:*               LISTEN      1/systemd
    • tcp        0      0 0.0.0.0:995             0.0.0.0:*               LISTEN      32454/dovecot
    • tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN      964/php-fpm: master
    • tcp        0      0 127.0.0.1:9001          0.0.0.0:*               LISTEN      964/php-fpm: master
    • tcp        0      0 0.0.0.0:587             0.0.0.0:*               LISTEN      32407/exim4
    • tcp        0      0 0.0.0.0:5355            0.0.0.0:*               LISTEN      2072/systemd-resolv
    • tcp        0      0 0.0.0.0:110             0.0.0.0:*               LISTEN      32454/dovecot
    • tcp6       0      0 :::143                  :::*                    LISTEN      1/systemd
    • tcp6       0      0 :::22                   :::*                    LISTEN      31555/sshd
    • tcp6       0      0 :::993                  :::*                    LISTEN      1/systemd
    • tcp6       0      0 :::995                  :::*                    LISTEN      32454/dovecot
    • tcp6       0      0 :::3306                 :::*                    LISTEN      31991/mysqld
    • tcp6       0      0 :::5355                 :::*                    LISTEN      2072/systemd-resolv
    • tcp6       0      0 :::110                  :::*                    LISTEN      32454/dovecot
    • udp        0      0 127.0.0.53:53           0.0.0.0:*                           2072/systemd-resolv
    • udp        0      0 0.0.0.0:5355            0.0.0.0:*                           2072/systemd-resolv
    • udp6       0      0 :::5355                 :::*                                2072/systemd-resolv

  • Службы пользователи и порты lsof -i
  • Прослушиваем порт mysql через tcpdump(надо установить):
    • tcpdump -l -i eth0 -w - src or dst port 3306|strings (заменить eth0 на enet0)
  • Правила файервола iptables -nvL:
    • либо iptables-save либо iptables -S
    • сохранение iptables-save > /etc/iptables.rules ( /etc/iptables/rules.v4)
    • Удаление правила по его номеру в цепочке: iptables -D INPUT 1
    • вывод с номерами строк iptables -L --line-numbers
    • добавить ftp:
      • iptables -A INPUT  -p tcp -m tcp --dport 21 -m conntrack --ctstate ESTABLISHED,NEW -j ACCEPT -m comment --comment "Allow ftp connections on port 21"
      • iptables -A OUTPUT -p tcp -m tcp --dport 21 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT -m comment --comment "Allow ftp connections on port 21"
    • Рестарт /etc/init.d/netfilter-persistent restart
  • Для установки vesta:
    • bash vst-install.sh --nginx yes --phpfpm yes --apache no --named no --remi yes --vsftpd no --proftpd no --iptables yes --fail2ban no --quota no --exim yes --dovecot yes --spamassassin yes --clamav yes --softaculous yes --mysql yes --postgresql no
  • Обновляем (sudo) apt-get update и apt-get upgrade
  • Логи сервера лежат /var/log/apache2/domains
  • tar xf images.tar.gz - авто распаковка
  • tar -cvf file.tar domain.ru запаковка архива
    • со сжатием tar -cvzf filename.tar.gz dir_name
  • cp -r /library/. копирование всех файлов и каталогов (без скрытых cp -r /library/*)
  • chmod 700 cache/ - права на файл, папку
  • chown -R admin:nogroup /home/admin/web/domain.ru - права на запись файлов для юзера (-R -m)
  • cat /etc/issue версия ubuntu
  • dpkg -l список пакетов
  • Удаление пакетов apt-get:
    • service spamassassin stop
    • systemctl disable spamassassin.service
    • remove spamassassin
  • Полное удаление пакетов:  Во-первых, вам нужно найти extact имя пакета из списка установленных пакетов, используя команду:  dpkg --get-selections | grep -i roundcube Затем вы можете удалить его с помощью commnand: apt-get remove <package name> 
  • php -v версия php
  • php artisan --version версия laravel (зайти в папку с artisan)
  • rm -rf letters/ Удаление всей директории с содержимым
  • sudo rm /var/lib/apt/lists/* -vf  удаление старых данных перед обновлением
  • service apache2 stop (start)
  • Удаление пакетов
    • sudo apt-get remove synaptic 
    • sudo apt-get remove --auto-remove synaptic
    • Purging your config/data too
    • sudo apt-get purge synaptic
    • Or similarly, like this synaptic
    • sudo apt-get purge --auto-remove synaptic
  • sudo apt-get autoremove
  • sudo apt-get autoclean
  • Поиск find / -iname filename (пусто если ничего нет)
  • Удаление пакетов composer composer global remove mypack 
  • ПЕРЕЗАГРУЗКА
  • sudo /etc/init.d/apache2 restart перезапуск apache
  • /etc/init.d/nginx restart
  • service php5-fpm restart
  • grep -r --exclude-dir=dev --exclude-dir=sys --exclude-dir=proc PATTERN data поиск текста
  • grep -ri "public_html" --exclude-dir={log,proc,sys} --exclude="*.log" (. - с точкой в конце - текущий каталог)
  • Удаление кеша htcacheclean -r (не работает - нужен путь)
  • cat /etc/passwd - посмотреть список юзеров
  • Выход из vi  :q!
  • sudo userdel admin
  • Настройки apache2.conf для экономии памяти: 
    • Поищите в файле /etc/apache2/apache2.conf         debian/ubuntu
    • /etc/httpd/conf/httpd.conf         centos/redhat
    • StartServers 
    • Там как раз будет указано количество запускаемых процессов.
  • Отображение процессов:
Для того, чтобы увидеть, сколько % ЦПУ и памяти занимают запущенные вами процессы:
[user]$ ps –u
Чтобы узнать приоритет процесса и значение nice, воспользуйтесь опцией -l:
[user]$ ps l
Команда top
Команда ps позволяет сделать как бы "моментальный снимок" процессов, запущенных в системе. В отличие от ps команда top отображает состояние процессов и их активность "в реальном режиме времени". На рисунке 8.5 изображено окно терминала, в котором запущена программа top.
Сортировка по объёму памяти:
shift+M
Сортировка по времени:
shift+T
Выход из команды top - q
  • Кэширование файлов - free -h
  • Вывод жирных процессов с сортировкой
    • ps -eo size,pid,user,command --sort -size | awk '{ hr=$1/1024 ; printf("%13.2f Mb ",hr) } { for ( x=4 ; x<=NF ; x++ ) { printf("%s ",$x) } print "" }'
  • Посмотреть процессы с php ps aux | grep php
  • ЛИКБЕЗ ПОД ДИСТРИБУТИВАМ
  • /etc/apache2/apache.conf - основные настройки сервера, глобальные для дистрибутива.
  • /etc/apache2/httpd.conf - пользовательские настройки сервера, глобальные для дистрибутива. Обычно пустой, мало-мало, что туда можно РЕАЛЬНО написать с пользой для дела.
  • /etc/apache2/conf.d/ - пользовательские настройки сервера для отдельных модулей, там тоже мало что можно настроить, но таки есть моменты...
  • /etc/apache2/modules-available/*.load - файлы загрузки модулей. Обычно нет смысла их редактировать, но есть исключения. Я отрихтовал прогрузку DAV/DAV_FS/DAV_SVN, чтобы не срала в лог ошибками. Тикет на лаунчпаде.
  • /etc/apache2/modules-available/*.conf - файлы настройки модулей.
  • /etc/apache2/sites-available/* - сайты, настроенные в сиситеме.
  • /etc/apache2/*-enabled/* - то, что реально включено и загружается при старте сервера.
  • Включать - a2ensite/a2enmod. Выключать, соответственно, a2dis***.

Комментарии