Skip to content

Linux commands cheat sheet

andyceo edited this page Feb 17, 2021 · 11 revisions

Пользователи и группы

Вся информация о пользователях и группах храниться в файлах /etc/passwd, /etc/shadow и /etc/group.

Добавление пользователя

useradd - неинтерактивная команда

sudo useradd <USERNAME>

Данная команда добавляет пользователя, но без дополнительных опций ваш пользователь не будет иметь пароля или домашней директории.

Вы можете использовать опцию -d для установки домашней директории пользователя. Опция -m принудительно заставит useradd создать домашнюю директорию. Мы попробуем создать аккаунт пользователя с этими опциями, и потом используем команду passwd для установки пароля на данный аккаунт. В качестве альтернативы вы можете использовать опцию -p для установки пароля, но я предпочитаю устанавливать пароль используя passwd.

sudo useradd -d /home/testuser -m testuser
sudo passwd testuser

Подробнее: Создаем пользователя в Ubuntu Server

adduser - интерактивная

sudo adduser <USERNAME>

Команда adduser более простая чем команда useradd, так как она спрашивает вас о каждом действии.

Пример:

geek@ubuntuServ:/etc/skel$ sudo adduser thegeek
    Password:
    Adding user `thegeek'…
    Adding new group `thegeek' (1004).
    Adding new user `thegeek' (1004) with group `thegeek'.
    Creating home directory `/home/thegeek'.
    Copying files from `/etc/skel'
    Enter new UNIX password:
    Retype new UNIX password:
    No password supplied
    Enter new UNIX password:
    Retype new UNIX password:
    passwd: password updated successfully
    Changing the user information for thegeek
    Enter the new value, or press ENTER for the default
    Full Name []: The Geek
    Room Number []: 0
    Work Phone []: 555-1212
    Home Phone []: 555-1212
    Other []:
    Is the information correct? [y/N] y

Смена пароля: passwd

sudo passwd <USERNAME>

Подробнее: http://manpages.ubuntu.com/manpages/hardy/ru/man1/passwd.1.html

Удаление пользователя: deluser; удаление группы: delgroup

http://manpages.ubuntu.com/manpages/hardy/ru/man8/deluser.8.html

Список пользователей

w, users, last, vipw, who, finger

Добавление пользователя в администраторы

Для Ubuntu версии ниже 12.04

Для уже существующего пользователя: sudo usermod -a -G sudo <user>

Также можно попробовать: sudo adduser <username> sudo

Детальная информация о пользователе

  • id <USERNAME>: покажет имя пользователя, uid, перечислит все группы и их gid, к которым принадлежит пользователь. Если <USERNAME> не задан, используется текущий пользователь. Пример: id andyceo
  • groups <USERNAME>: покажет все группы, к которым приписан пользователь. Если USERNAME не задан, то используется текущий пользователь. Пример: groups andyceo

Детальная информация о группе

  • getent group <GROUPNAME>: покажет имена пользователей, входящих в группу <GROUPNAME>. Если <GROUPNAME> не задан, то вывод команды аналогичен выводу cat /etc/group.

Сменить оболочку (shell) пользователя

sudo chsh -s /bin/bash <username>

Если терминал "шалит", и при нажатии на кнопки-стрелочки "вверх", "вниз" вместо листинга по истории команд, печатаются непонятные символы вроде ^[[A, ^[[B, ^[[C или ^[[D, нужно сменить его на bash (потому что сейчас, скорее всего, он на sh). Подробнее см. Arrow keys, tab-complete not working

Файловая система

  • cp - скопировать файлы

    при копировании сбивается группа у директорий и файлов.

  • ln - создать символическую ссылку

      ln -s <SOURCE> <ИМЯ_ССЫЛКИ_ЗДЕСЬ>
      
      ln -s ~/hosts/drupal5/files ~/hosts/drupal6/files
    

    создает символическую ссылку на директорию

  • chmod - права на папку или файл

    • Поставить права 777 на папку или файл: sudo chmod ugo+rwx <папка или файл>
    • Поставить права 777 на папку или файл, включая поддиректории: sudo chmod -R ugo+rwx <папка или файл>
  • chown - владелец/группа файла или папки

    • Изменить владельца и группу у файла: sudo chown <новый владелец>:<новая группа> <папка или файл>
    • Изменить только владельца у файла:sudo chown <новый владелец> <папка или файл>
    • Изменить только группу у файла: sudo chown :<новая группа> <папка или файл>
    • Изменить только группу у директории рекурсивно (со всеми подкаталогами): sudo chown -R :<новая группа> <папка или файл>
  • du - узнать размер директории

    • показать размер в килобайтах /home (выводя размер каждой её поддиректории): du /home
    • показать размер в килобайтах и мегабайтах: du -h /home
    • покажет только общий размер самой директории, без поддиректорий: du -sh /home
    • покажет общий размер директории в КБ, не выводя каждую поддиректорию: du -ks /home
    • то же самое, только в МБ: du -ksh /home
  • stat - вывод информации о файле (структура POSIX stat).

  • hd или hexdump - вывод файла в шестнадцатиричном виде.

Поиск файлов, в том числе по содержимому

  • find - глобальный поиск и замена в файлах в текущей директории

    find -type f -exec sed -i -e 's/search/replace/g' {} ;

  • grep - поиск файлов по маске и содержимому

Полезные ссылки:

Сравнение файлов

  • cmp файл1 файл2 - эта команда остановится, когда найдет первое различие, и выведет его. Если ничего не найдет, просто остановится, дойдя до конца файлов.

  • diff файл1 файл2 - эта команда выведет все различия в файлах. Можно сравнивать папки. diff -u file1 file2 | tig покажет различия в формате git diff. Также, см. colordiff:

      sudo apt-get install colordiff
      cp /etc/colordiffrc ~/.colordiffrc
      nano ~/.colordiffrc
      
      # be more git-like:
      plain=off
      newtext=darkgreen
      oldtext=darkred
      diffstuff=darkcyan
      
      # compare two files
      colordiff -u file1 file2
      
      # recursively compare paths
      colordiff -ruN path1 path2
    
  • md5sum файл1 - напечатает сумму md5 указанного файла

  • md5sum файл2 - напечатает сумму md5 указанного файла, и можно суммы сравнить, вместо сравнения самих файлов.

Архивы, упаковка файлов

  • tar

      tar -zcf <полный путь + имя файла для создаваемого архива> <полный путь до папки или файла для запаковки>
      tar -zcf /home/intecco/hosts/files.intecco.ru/mbf.tar.gz /home/intecco/hosts/drupal6/sites/michaelbang.net/files
      tar -zcf /home/intecco/hosts/files.intecco.ru/alex.tar.gz /home/intecco/hosts/drupal6/sites/alex.intecco.ru/files
    

Много информации по этой команде есть здесь: Заархивировать файл

  • gzip, gunzip

Ссылки

Запуск скрипта в режиме демона

Нужно отключить stdin, stdout, и stderr, и заставить игнорировать сигнал SIGHUP:

nohup ./myscript 0<&- &>/dev/null &

Или, логируя весь вывод:

nohup ./myscript 0<&- &> my.admin.log.file &

Ссылки:

Также интересные разъяснения по поводу того, чем отличаются nohup, command & и nohup <command> & disown:

И просто о том, как оставить процессы запущенными после окончания SSH-сессии:

Системные логи текущего и предыдущих сеансов (dmesg)

Ubuntu 16.04 и выше, а также любая система с journalctl.

  • dmesg: вывести сообщения ядра (текущий сеанс)
  • demsg -T: вывести сообщения ядра с пометкой времени в виде обычной даты/времени
  • journalctl -o short-precise -k: текущий сеанс
  • journalctl -o short-precise -k -b -1: последняя загрузка
  • journalctl -o short-precise -k -b -2: две загрузки назад
  • journalctl --list-boot: список сеансов (загрузок), для которых есть логи

Параметры для journalctl:

-k = dmesg
-b boot_number = How many reboots ago 0, -1, -1, etc.
-o short-precise = dmesg -T

Также есть -o short и -o short-iso которые выведут время в виде даты и даты-времени в ISO формате, соответственно.

Ссылки:

Копирование с одного сервера на другой

Ключевые слова: fuse, sshfs, есть монтирование в mc, scp

Перенос системы с другого сервера

sudo tar c * | ssh andyceo@178.162.247.30 'cat > ubuntu804running.tar' && echo OK
sudo dd if=/dev/hda1 | ssh andyceo@178.162.247.30 'cat > ubuntu804rescuehda1.dd' && echo OK

Удаление старых ядер в Ubuntu

Посмотреть текущее ядро

uname -r
uname -a

Вывод всех ядер

dpkg -l | grep linux-image


user@84-16-230-159:~$ dpkg -l | grep linux-image
ii  linux-image-2.6.24-16-server          2.6.24-16.30                Linux kernel image for version 2.6.24 on x86
ii  linux-image-2.6.24-19-server          2.6.24-19.41                Linux kernel image for version 2.6.24 on x86
ii  linux-image-2.6.24-23-server          2.6.24-23.52                Linux kernel image for version 2.6.24 on x86
ii  linux-image-2.6.24-24-server          2.6.24-24.57                Linux kernel image for version 2.6.24 on x86

Переход на обновленное ядро в Ubuntu LTS

Для отката на базовое ядро следует выполнить команду:

sudo apt install --install-recommends linux-generic

Для установки обновленного ядра в Ubuntu Server следует запустить:

sudo apt install --install-recommends linux-generic-hwe-20.04

или вместо linux-generic-hwe-20.04 подставить нужную версию.

Удаление ядер

Из примера выше получается, надо удалить старое linux-image-2.6.24-16-server и т.д.

или же команда

sudo su -c 'apt-get autoremove linux-image-2.6.28-11-generic && update-grub'

Также можно удалить их через синаптик, набрав в поиске фильтр по названию linux-image

После удаления старого ядра, у меня при ''sudo apt-get upgrade'' Ubuntu хотел удалить модули от старого ядра:

... FATAL: Could not open '/boot/System.map-2.6.24-16-server': No such file or directory ...

Нужно просто создать ему нужные файлы и директории: http://ubuntuforums.org/showthread.php?t=831658

Удаление старых ядер одной командой

sudo aptitude purge ~ilinux-.*-\[0-9\]\(\!`uname -r | sed 's/-generic//'`\)

Как узнать версию установленной библиотеки

dpkg -s zlib1g

===== Drupal ===== Для работы с CVS необходимо быть в директории на уровень выше той директории, где находится движок. Т.е.:

###Извлечение/обновление Drupal из CVS НАПИСАТЬ!!!!!

###Извлечение/обновление отдельного файла дистрибутива Drupal из CVS cvs -z6 -d:pserver:anonymous:anonymous@cvs.drupal.org:/cvs/drupal co -r DRUPAL-6-13 -d drupal6/includes drupal/includes/form.inc

###Обновить/извлечь модуль: cvs -z6 -d:pserver:anonymous:anonymous@cvs.drupal.org:/cvs/drupal-contrib checkout -r DRUPAL-6--1-17 -d devel contributions/modules/devel

cvs -z6 -d:pserver:anonymous:anonymous@cvs.drupal.org:/cvs/drupal-contrib checkout -r DRUPAL-6--1-2 -d site_map contributions/modules/site_map

cvs -z6 -d:pserver:anonymous:anonymous@cvs.drupal.org:/cvs/drupal-contrib checkout -r DRUPAL-6--1-10 -d print contributions/modules/print

cvs -z6 -d:pserver:anonymous:anonymous@cvs.drupal.org:/cvs/drupal-contrib checkout -r DRUPAL-6--1-4 -d aes contributions/modules/aes

cvs -z6 -d:pserver:anonymous:anonymous@cvs.drupal.org:/cvs/drupal-contrib checkout -r DRUPAL-6--2 -d backup_migrate contributions/modules/backup_migrate

cvs -z6 -d:pserver:anonymous:anonymous@cvs.drupal.org:/cvs/drupal-contrib checkout -r DRUPAL-6--1 -d check_heavy_ui contributions/modules/check_heavy_ui

cvs -z6 -d:pserver:anonymous:anonymous@cvs.drupal.org:/cvs/drupal-contrib checkout -r DRUPAL-6--1 -d fckeditor contributions/modules/fckeditor

cvs -z6 -d:pserver:anonymous:anonymous@cvs.drupal.org:/cvs/drupal-contrib checkout -r DRUPAL-6--2-8 -d webform contributions/modules/webform

cvs -z6 -d:pserver:anonymous:anonymous@cvs.drupal.org:/cvs/drupal-contrib checkout -r DRUPAL-6--1-6 -d scheduler contributions/modules/scheduler

###Создать запись cron: 05 * * * * wget --no-check-certificate -t 0 -qO /dev/null 'http://elides.intecco.ru/cron.php' >/dev/null 2>&1

SVN

Поставить svn, добавить пользователя в svn, формат файла доступа для svn - http://www.lissyara.su/?id=1669 Добавить пользователя в SVN:

  • Поправить файл доступа svn.
  • Дать ему логин-пароль.

Запускаем svnserve svnserve.exe --daemon --root диск:\путь\к\папке\с\хранилищами

Настройка svnserve файл conf/svnserve.conf:

[general] anon-access = none auth-access = write password-db = userfile

Crontab:

19 * * * * wget --no-check-certificate -t 0 -qO /dev/null 'http://example.com/cron.php' >/dev/null 2>&1 10 * * * * wget --no-check-certificate -t 0 -qO /dev/null 'http://victory.intecco.ru/cron.php' >/dev/null 2>&1

Утилита для запуска каких-нибудь программ вместе с системой (автозапуск демонов): sysv-rc-conf

Утилита htop - продвинутый top. показывает число ядер

Узнать версию Linux:

Разное

Привилегии

sudo command – запустить command с правами root sudo su – открыть командную строку с правами root sudo su user – открыть коммандную строку с правами user sudo -k – забыть пароль sudo gksudo command – графический диалог sudo (GNOME) kdesudo command – графический диалог sudo (KDE) sudo visudo – редактировать /etc/sudoers gksudo nautilus – файловый менеджер с правами root (GNOME) kdesudo konqueror – файловый менеджер с правами root (KDE) passwd – сменить Ваш пароль

Управление X-сервером

sudo /etc/init.d/gdm restart – перезапустить X (GNOME) sudo /etc/init.d/kdm restart – перезапустить X (KDE) файл /etc/X11/xorg.conf – конфигурация X sudo dpkg-reconfigure -phigh xserver-xorg – сбросить конфигурацию X Ctrl+Alt+Bksp – перезапустить X-сервер Ctrl+Alt+Fn – переключиться на консоль №n Ctrl+Alt+F7 – вернуться к X

Управление системными сервисами

start service – запустить service (Upstart) stop service – остановить service (Upstart) status service – проверить, запущен ли service (Upstart) /etc/init.d/service start – запустить service (SysV) /etc/init.d/service stop – остановить service (SysV) /etc/init.d/service status – проверить service (SysV) /etc/init.d/service restart – перезапустить service (SysV) runlevel – посмотреть текущий runlevel

Настройка сетевых подключений

ifconfig – просмотр сетевой информации iwconfig – просмотр информации беспроводных устройств sudo iwlist scan – сканировать беспроводные сети sudo /etc/init.d/networking restart – перезапустить сеть файл /etc/network/interfaces – файл для ручной настройки сети ifup interface – поднять interface ifdown interface – положить interface

Специальные пакеты

ubuntu-desktop – стандартная среда Ubuntu kubuntu-desktop – рабочий стол KDE xubuntu-desktop – рабочий стол XFCE ubuntu-minimal – основные утилиты Ubuntu ubuntu-standard – стандартные утилиты Ubuntu ubuntu-restricted-extras – не свободные, но полезные пакеты kubuntu-restricted-extras – несвободные пакеты для kubuntu xubuntu-restricted-extras – несвободные пакеты для xubuntu build-essential – пакеты, необходимые для сборки программ linux-image-generic – последнее generic ядро linux-headers-generic – последние хедеры ядра

Управление Фаерволом

ufw enable – включить фаервол ufw disable – выключить фаервол ufw default allow – разрешить все подключения ufw default deny – запретить все подключения ufw status – текущий статус и правила ufw allow port – разрешить соединения по порту port ufw deny port – закрыть port ufw deny from ip – заблокировать ip адрес

Имена приложений

nautilus – файловый менеджер (GNOME) dolphin – файловый менеджер (KDE) krusader — двухпанельный файловый менеджер konqueror – веб-браузер (KDE) kate – текстовый редактор (KDE) gedit – текстовый редактор (GNOME)

Разное про архивы

  • cat drupal_20110317_1337.sql.gz | gunzip | sql
  • sql dump
  • zcat drupal_20110322_1404.sql.gz | less
  • zcat drupal_20110322_1404.sql.gz | head -n 3000 | tail -n 1 | less
  • zcat drupal_20110322_1404.sql.gz | head -n 3000 | tail -n 1
  • head -3000 dump.sql > tt.sql

Перенаправление стандартного вывода и ошибок

В Linux (и других ОС) 2 основных потока вывода: stdout и stderr. Сообщения об ошибках печатаются в stderr, обычные сообщения - в stdout. Можно перенаправлять эти потоки следующим образом:

  1. Перенаправить stdout в один файл, а stderr в другой: command > out 2>error

  2. Перенаправить stderr в stdout (&1), а потом перенаправить stdout в файл: command >out 2>&1

  3. Перенаправить оба в файл: command &> out

  4. Перенаправить только ошибки в файл: command 2> out

Везде в вышеперечисленных примерах файл сначала очищается (оператор >). Чтобы дополнить файл, вместо очистки, нужно использовать оператор >>. Однако, поскольку bash выполняет редиректы слева направо, можно использовать следующий паттерн:

command >>out 2>&1

А начиная с Bash версии 4 можно использовать: command &>> outfile (непереносимый способ).

Ссылки

Sidebar is under construction

Clone this wiki locally