Linux commands cheat sheet - andyceo/documentation GitHub Wiki
Вся информация о пользователях и группах храниться в файлах /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
sudo passwd <USERNAME>
Подробнее: http://manpages.ubuntu.com/manpages/hardy/ru/man1/passwd.1.html
http://manpages.ubuntu.com/manpages/hardy/ru/man8/deluser.8.html
w, users, last, vipw, who, finger
Для уже существующего пользователя: 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
.
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 <папка или файл>
- Поставить права 777 на папку или файл:
-
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
:
- Differences between “ & disown” and “nohup & disown”
- Difference between nohup, disown and &
- What's the difference between nohup and ampersand
- How can I detach a process from a bash script?
И просто о том, как оставить процессы запущенными после окончания SSH-сессии:
- How to keep processes running after ending ssh session?
- How to execute a command in screen and detach?
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 формате, соответственно.
Ссылки:
- How to read dmesg from previous session? (dmesg.0)
- How to find previous boot log after Ubuntu 16.04 restarts?
Ключевые слова: fuse
, sshfs
, есть монтирование в mc, scp
sudo tar c * | ssh [email protected] 'cat > ubuntu804running.tar' && echo OK
sudo dd if=/dev/hda1 | ssh [email protected] 'cat > ubuntu804rescuehda1.dd' && echo OK
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
Для отката на базовое ядро следует выполнить команду:
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
и т.д.
-
Очень полезная справка по выводу команды
dpkg -l
: Коды пакетов при выводе dpkg -l -
Автоматическое удаление старых ядер: http://habrahabr.ru/blogs/ubuntu/116336/
sudo su -c 'apt-get remove -f linux-image-2.6.24-16-server && update-grub'
или же команда
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:[email protected]:/cvs/drupal co -r DRUPAL-6-13 -d drupal6/includes drupal/includes/form.inc
###Обновить/извлечь модуль: cvs -z6 -d:pserver:anonymous:[email protected]:/cvs/drupal-contrib checkout -r DRUPAL-6--1-17 -d devel contributions/modules/devel
cvs -z6 -d:pserver:anonymous:[email protected]:/cvs/drupal-contrib checkout -r DRUPAL-6--1-2 -d site_map contributions/modules/site_map
cvs -z6 -d:pserver:anonymous:[email protected]:/cvs/drupal-contrib checkout -r DRUPAL-6--1-10 -d print contributions/modules/print
cvs -z6 -d:pserver:anonymous:[email protected]:/cvs/drupal-contrib checkout -r DRUPAL-6--1-4 -d aes contributions/modules/aes
cvs -z6 -d:pserver:anonymous:[email protected]:/cvs/drupal-contrib checkout -r DRUPAL-6--2 -d backup_migrate contributions/modules/backup_migrate
cvs -z6 -d:pserver:anonymous:[email protected]:/cvs/drupal-contrib checkout -r DRUPAL-6--1 -d check_heavy_ui contributions/modules/check_heavy_ui
cvs -z6 -d:pserver:anonymous:[email protected]:/cvs/drupal-contrib checkout -r DRUPAL-6--1 -d fckeditor contributions/modules/fckeditor
cvs -z6 -d:pserver:anonymous:[email protected]:/cvs/drupal-contrib checkout -r DRUPAL-6--2-8 -d webform contributions/modules/webform
cvs -z6 -d:pserver:anonymous:[email protected]:/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 - 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
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. показывает число ядер
sudo cat /etc/issue.net
lsb_release -a
uname -r
uname -a
- источник: Как узнать версию Ubuntu
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 – сменить Ваш пароль
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
. Можно перенаправлять эти потоки следующим образом:
-
Перенаправить
stdout
в один файл, аstderr
в другой:command > out 2>error
-
Перенаправить
stderr
вstdout
(&1
), а потом перенаправитьstdout
в файл:command >out 2>&1
-
Перенаправить оба в файл:
command &> out
-
Перенаправить только ошибки в файл:
command 2> out
Везде в вышеперечисленных примерах файл сначала очищается (оператор >
). Чтобы дополнить файл, вместо очистки, нужно использовать оператор >>
. Однако, поскольку bash
выполняет редиректы слева направо, можно использовать следующий паттерн:
command >>out 2>&1
А начиная с Bash версии 4 можно использовать: command &>> outfile
(непереносимый способ).