Comments 170
Уж спратяли бы простыню ссылок под кат, то как-то совсем неприлично
Пока играешься — проще. Когда работаешь — куда проще и быстрее man в терминале. Ньюанс, что если всё время только гуглить, то навык работы с man не выработается. Ещё неиспользование man может восприниматься как признак неопытности. Наблюдал даже абсурдный случай, когда на лекции из курса по cyber лектор не смог нагуглить правильный синтакс флагов для одной команды nmap, которую пытался продемонстрировать. Ему даже в голову не пришло поискать в man, а на веб-версию man в поисковой выдаче кликнуть не догадался.
В смысле "не с теми"? Там очень часто есть и что почитать об особенностях работы той или иной команды или утилиты, а для быстрого рефреша по флагам — есть поиск, забиваешь, скажем, "/-D", быстро несколько раз жмёшь "n", и если надо вернуться — "N", читаешь, жмёшь "q", пишешь команду. Если надо несколько раз сверяться — пишешь команду, в отдельном табе терминала или окне мультеплексера бегаешь по man-у. Всё это, включая навигацию по документу, делается очень быстро, если освоить клавиатурные сокращения. Куда быстрее, чем перейти в браузер и гуглить.
Можно ещё флаги -h, --help использовать, так как у некоторых программ может не быть man'а
Также --usage
, иногда субкомманда help
/help topics
и т. п. Сообщение об ошибке при неправильном запуске часто подсказывает. Есть некоторое количество утилит которые идут без мана и инфо вообще.
Ну и варианты установки системы без man/man-db/man-pages тоже встречаются, особенно при автоматизированной установке, в контейнерах и т. п.
2. Fio в пакетах более свежая версия, чем предлагаемая ссылка на исходники.
3. Надо уточнять, на какой системе применима данная команда, если она может быть использована только на debian based или red hat based системе.
Но в общем — для новичков сойдёт.
2. Да, я ведь брала этот пример из своей статьи 2017 года)) Исправила и подписала, какую часть менять, а то вы правы, в таких инструкциях обычно копируют команду и ее же подставляют, если не сказано иное
3. Ох, это уже сложнее )) Добавила в начало статьи «примеры я все проверяла на cent os, red hat based системе)», пока не готова проверить на дебиан / прогуглить, какие там работать не будут))
Спасибо за комметарий!
Как команда «chkconfig cdi on» связывается с сервисом «test»?
Ну я не был бы так категоричен… Вариант с systemd
/journald
приятен, но реальность такова что ещё куча народу использует всякие развлечения типа upstart
+rc.d/init.d
и связки journald
+rsyslog/syslog-ng
. Тот же CentOS/RHEL 6 ещё поддерживается до конца этого года. Не помню что там у Debian и Ubuntu, но первый тоже долгоживущий.
Чтобы запустить скрипт, нужно указать полный путь к нему. Это важно! Даже если вы находитесь в той папке, где и скрипт, он не будет найден.
В текущей папке можно запустить скрипт через ./имя_скрипта
.
Статья от дилетанта для дилетантов. Это плохо на самом деле, так как даётся очень много вредных советов. Начиная от того, что под рутом работать, это нормально, заказчивая мелочами всякими, типа чтоб поиграться с linux, надо vds. Хотя сейчас достаточно wsl под windows 10.
Каждую команду в статье я проверила в консоли + нагуглила, так что неправду не писала. Да, в рамках моих задач работать под рутом это нормально. Хотя не спорю, что это может быть опасно. За «WSL» спасибо )
Пример — консольный файловый менеджер vifm запущеный из под обычного пользователя и из под рута через sudo:
1) Гуглим как ставить mc (midnignt commander) на вашу версию линукса
2) Все
mc почему-то мне так и не зашёл. ranger вызвал вау-эффект, но к нему долго привыкать, чтобы быстро работать. А вот без screen уже не могу, хотя это из другой оперы.
База, которая всегда нужна <...> touch
Зачем? Нет, серьезно, зачем? Штука полезная в весьма ограниченном спектре применения. А для тестировщика скорее вредная, ведь ему важно понимать как давно менялось сожержимое лога или конфига.
Если так нужно создать новый файл — делайте это тем же vi(m)'ом. Так, даже если окажется что файл уже существовал вы сможете просто закрыть редактор без изменений и не собьете таймстемп.
На «база, которая всегда нужна» — это никак не тянет. Есть туча комманд нужнее, которые автор оставил «на самостоятельное изучение».
echo -n > filename.txt
Нужно разделять семантику команды. Когда нужно просто убедиться что файл будет — touch подойдёт. Когда нужно убедиться что файл будет и он будет пустой — лучше через редактор или через echo.
>filename.txt
Можно несколько усложнить и поставить впереди пустую команду
: > filename.txt
но смысла в лишних двух символах особого нет
LESS=+/Redirecting\ Output man bash
Redirecting Output
Redirection of output causes the file whose name results from the expansion of word to be opened for writing on file
descriptor n, or the standard output (file descriptor 1) if n is not specified. If the file does not exist it is created;
if it does exist it is truncated to zero size.
The general format for redirecting output is:
[n]>word
В любом случае, спасибо, буду знать что такое как у вас вообще возможно.
Пока пытаюсь найти подобное в интернете, но не получается, не могли бы вы поделиться выводом этих команд для большей ясности
echo $SHELL $TERM
lsof -ap $$ -d 0-2
echo $SHELL $TERM
/usr/bin/zsh
rxvt-unicode-256color
lsof -ap $$ -d 0-2
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
zsh 4148446 oxyd 0u CHR 136,3 0t0 6 /dev/pts/3
zsh 4148446 oxyd 1u CHR 136,3 0t0 6 /dev/pts/3
zsh 4148446 oxyd 2u CHR 136,3 0t0 6 /dev/pts/3
К слову про разные варианты, тут ещё есть вопрос читабельности. Вспоминаем знаменитое:
echo "test... test... test..." | perl -e '$??s:;s:s;;$?::s;;=]=>%-{<-|}<&|`{;;y; -/:-@[-`{-};`-{/" -;;s;;$_;see'
tr ' !-0:-@^-`~' '`-{' <<<'(!";'
Учитывая что ключ -R нужен точно так же для рекурсивной смены владельца то его использование оправдано если ты применяешь это на папку, да и то не обязательно, условия бывают разные.
Я б ещё команду free и free -h добавил для понимания, что там по оперативе и свопу.
lsblk — для просмотра дисков, точек монтирования
Для df ещё б ключик -T указал бы, что бы можно было посмотреть тип фс.
Для du --max-depth= не хватает, что тоже может быть полезным
Про free хорошее замечание, спасибо, может попозже добавлю. Или направлю комментарии людей читать, тут много полезного))
"навредить не навредит..." !?
А вы попробуйте применить этот ключ для /var/www на веб сервере, где у каждого сайта свой пользователь.
В итоге переставил систему.
В итоге переставил систему.
на самом деле надо зайти в single режиме под рутом и поменять всё назад
-h, --human-readable
with -l and -s, print sizes like 1K 234M 2G etc.
Я вы вообще рекомендовал сделать алиас типа такого:
alias l='ls -alh'
github.com/mrzool/bash-sensible
Я последнее время предпочитаю вообще в алиасы l/ls/la/ll
себе exa
прописывать
А в чём преимущество помимо --tree?
В цвета ls тоже умеет. Если что есть github.com/trapd00r/LS_COLORS
Да у меня и для ls нормальные цвета были. Из важных для меня вещей — нормальные сортировки, отображение git'овых данных и нормальные операции по отображению древовидной структуры. Хотя я ещё параллельно dutree и broot (оба проекта тоже на расте) использую
в следующий раз на утюг надо снимать чтобы "лучше" качество было
Завтра же расшарю их своим новеньким, чтобы обучались.
Спасибо за статью, как новичку очень пригодится. В таком стиле, но с большим количеством примеров есть книга Скотт Граннеман — Linux. Необходимый код и команды. Карманный справочник
sudo shutdown -c 23:15 (отменить выключение компьютера)
sudo reboot (рестарт)
sudo fdisk -l (список хардов)
sudo mount -t ntfs /dev/sdb1 /media (sdb1-название харда)
mount (монтировать «/откуда /куда»)
ifconfig (Узнать ip адрес)
ping 94.142.141.199 -t -l 32100 (трассировка пакетов)
nano /etc/sysctl.conf (настройки swap)
sudo gedit /etc/hosts (файл хост)
sudo -i (стать root)
passwd (имя пользователя) (задать пароль)
ifconfig (Узнать ip адрес)
лучше ip a
а посмотреть настройки вайфая — iwconfig
меньше лишней информации — это удобнее, когда нужно только айпишник посмотреть.
ifconfig
может и три экрана текста выдать на некоторых машинах
А про вайфай пусть в комментариях читают, потому что мне кажется, это только если админ запросит инфу, но он тогда и команду подскажет
ifconfig в современных системах заменила утилита ip (ip addr аналог ifconfig без ключей), с куда более богатыми возможностями.
ls -lh
будет еще понятнее, потому что размер файлов выдает в "человекочитаемом" виде
Всё относительно. Без -h я ещё могу жить, можно привыкнуть быстро оценивать размеры и в байтах. А вот без обратной сортировки по времени часто жить довольно трудно, особенно когда надо быстро найти имя последних изменившихся логов в большом списке — спасает
ls -altr
Набираю уже рефлексивно даже когда не надо.
stat -c"%#a/%A %n" *
Показывает и в восьмеричном и в в human readable виде. А вообще права на файлы в восьмеричном виде запоминаются просто — r/w/x == 4/2/1. ;-) Дальше остаётся только сложить цифры и получить нужную комбинацию прав для определённой категории (владелец/группа/все остальные). Например мы хотим для файла следующие права: rwx для владельца, rw для группы, r для всех остальных, в результате: rwx == 4+2+1 == 7, rw == 4+2 == 6, r == 4. Результирующие права будут 764.Вот именно эта команда должна быть на первом месте.
Бывают такие места, где и мобильной связи нет от слова совсем.
Linux — это операционная система. Как винда (windows), только более защищенная.
линукс это ядро, а не ОС
и исходя из этого
А еще линукс бесплатный
есть коммерческие дистрибутивы, типа RHEL, которые требуют платную подписку
В винде легко подхватить вирус, в линуксе это практически невозможно.
это не потому что «линукс более защищенный чем винда»… в линуксе тоже были эпичные дырки… типа получения рута через открытый в vim текстовый файл… но если продолжать тему то опять в холивар скатимся…
Чтобы сервис test запускался автоматически при рестарте системы, используйте команду:chkconfig test on
вот допустим я почитал статью и захотел линукс, взял убунту свежую и пишу вашу команду и…
chkconfig: command not found
и что делать?
Если же приложение запускается как сервис, то все еще проще:
вот я пришел с винды… первый вопрос, а моё приложение может запускаться как сервиc? могу я запустить mc как сервис?
===
мануал какбы для новичков… но почемуто подразумевается что я много уже чего знаю специфического…
В холивар про защищенность мы точно не скатимся, потому что в этой сфере я совсем профан. Скорее, положусь на ваше мнение. Это скорее упрощенно для новичка, чем отличаются две системы )
А про chkconfig я уже добавила в начало статьи, что свои примеры тестировала на centos =) А на тему «что делать» — переходить по ссылке из «см также», или читать man, или гуглить.
«вот я пришел с винды… первый вопрос, а моё приложение может запускаться как сервиc? могу я запустить mc как сервис?» — хм, что-то я сомневаюсь, что у новичка возникнет такой вопрос. Как запустить mc написано, зачем его запускать как сервис то?
Если у вас есть приложение, которое должно запускаться как сервис, вы обычно об этом знаете)) Вот вы тестируете приложение, знаете, что оно запущено как сервис. Это напоминался, как в таком случае остановить / запустить.
Не поняла, что конкретно специфического должен знать новичок, чтобы у него получилось выполнить команды из статьи? Ну ок, запуск сервиса уже посложнее, тут надо сервис иметь. Все остальные команды замечательно будут работать (по крайней мере на red hat based системе)
или читать man, или гуглить.
сложно понять как читать man на неизвестно что :) остается только гуглить
зачем его запускать как сервис то?
потому что написано что «а если приложение умеет то..»… вот у меня вопрос, а какое приложение умеет? может mc умеет?
Как запустить mc написано, зачем его запускать как сервис то?
а вдруг я хочу в каждом окошке с терминалом нажать ctrl+o и получить запущенный mc? (понятно что это не так делается… но допустим я совсем не понимаю)
Не поняла, что конкретно специфического должен знать новичок
например чтобы запускать программы, надо чтобы у них были execute права, что после винды очень нетривиально… в винде скачал exe и запустил сразу… а в линуксе… ничего не произойдёт… и опять надо чтото сразу гуглить
spi-inc.org/corporate/annual-reports/2018.pdf
Вот например отчёт за 2018 год. Тот же Debian собрал больше 300 000$ пожертвований (что конечно пшик, да).
Все остальные команды замечательно будут работать (по крайней мере на red hat based системе)
Чё, правда о_О
[root@xxxxx ~]# chkconfig --list
Note: This output shows SysV services only and does not include native
systemd services. SysV configuration data might be overridden by native
systemd configuration.
If you want to list systemd services use 'systemctl list-unit-files'.
To see services enabled on particular target use
'systemctl list-dependencies [target]'.
[root@xxxxx ~]# cat /etc/redhat-release
CentOS Linux release 8.1.1911 (Core)
RHEL предлагает к дистрибутиву свой сервис — поддержку и только эта работа стоит денег. Все исходники этого дистрибутива выложены для всеобщего доступа и являются свободными ну и бесплатными если вдруг кому то не придет в голову их продавать — что совершенно не воспрещается -:)
«Странность» обоих редакторов объясняется тем, что им уже очень много лет. Они были созданы в те далёкие времена, когда компьютеры были большими и медленными, а понятий «наиболее распространённая ОС» или «стандартная клавиатура» не существовало. В Linux их полюбили за то, что они а) абсолютно свободные, в противовес большинству современных редакторов; б) по современным меркам потребляют просто крохи ресурсов, по этой же причине они из коробки доступны в большинстве дистрибутивов. Как следствие, vim есть просто везде, на абсолютно любой машине с линуксом.
Огромная база плагинов позволяет нарастить функциональность до полноценной IDE, что вкупе с, опять же, «изкоробочными» компилятором Си и интерпретатором bash позволяет сразу, почти без каких-то настроек и установок просто начать работать: создавать, поднимать, настраивать.
Утрированно говоря, вам дали комп с Windows и сказали что-то поднять или настроить: нужно скачать текстовый редактор, потому что блокнот ни черта не умеет, нужно скачать файловый менеджер, потому что проводник ни черта не умеет, и прочее. Вам дали комп с Linux и сказали что-то поднять или настроить: вы запустили vim и погнали. В нём есть всё.
Другой момент, а нужно ли это умение именно вам как конкретному специалисту? Это знаете только вы. Лично я так настоящим «гуру» и не стал, ибо, являясь java-разработчиком, сложным администрированием Linux я не занимаюсь, для правки конфигов мне достаточно nano. Vim просто навевает ностальгию по юности.
Вообще на тему преимуществ/недостатков вима написано(в том числе на хабре) уже достаточно.
Эти плагины(а нынче зачастую и функция из коробки) именно ради избавления от мышки используются.
То-то ideavim такой популярный среди тридцатилетних динозавров.
Ставить sublime в один ряд с notebook++ я бы понял, но ему даже до atom/vscode далеко, не говоря уже о idea/vs/eclipse.
Как следствие, vim есть просто везде, на абсолютно любой машине с линуксом.
Нет. Часто есть vi, а это не то же самое.
Огромная база плагинов позволяет нарастить функциональность до полноценной IDE, что вкупе с, опять же, «изкоробочными» компилятором Си и интерпретатором bash позволяет сразу, почти без каких-то настроек и установок просто начать работать: создавать, поднимать, настраивать.Огромная база плагинов позволяет нарастить функциональность до полноценной IDE, что вкупе с, опять же, «изкоробочными» компилятором Си и интерпретатором bash позволяет сразу, почти без каких-то настроек и установок просто начать работать: создавать, поднимать, настраивать.
Тоже не совсем правда. От vim/emacs с плагинами до IDE уровня IDEA довольно далеко. Хотя NetBeans, ARM Studio и т. п. побить не сложно. Ну и нормальной IDE побить Emacs для CL будет нереально, как и в случае со SmallTalk. Ситуация с использованием vim/emacs/atom/vscode в качестве IDE несколько улучшилась за счёт lang server'ов (rls/racer, clangd etc).
У vim есть важный бонус, когда всё плохо с сетью: в нём реально работать даже когда rtt вырастает до сотен миллисекунд. С nano такого счастья не будет.
Я, конечно, не джедай, но лично мне Vim нравится из-за продвинутых возможностей работы с текстом (nano не то что рядом не стоял, а на расстоянии многих световых лет), режимов ввода, возможности использовать регексы в записи макро, и навигации, заточенной под десятипальцевый набор текста.
Некоторые вещи однозначно устарели… в rhel/fedora/centos уже dnf, а не yum да и забыли про rpm. service уже немного depricated учитывая, что почти везде systemd. Стоит вероятно systemctl stop blabla.service и так далее. Вообще достаточно базовые вещи… но я думаю стоит написать побольше, там w, ip, ss, cat, awk, grep, tail, find, screen, как работают <> <<>> |, что такое stdin, stdout, stderr. Если про убунту — упомянуть нетплан. Если про mc — то базовые шоткаты, упомянуть про .netrc, хотлисты, быстрые переходы, сортировку, сохранение энкодинга.
Но писать про awk, grep и прочая — это скорее на каждую такую команду нужна отдельная статья, больно они сложные. Разве что в этой статье ссылки дать типа как «вот эти еще супер полезные» )) А про то, как работают стрелочки, есть ссылка на статью в разделе «И это все?» :)
Ну как сказать "забыли про rpm", он всё равно внизу живёт и иногда нужен и/или полезен. Начиная от rpm -qa
и rpm -ql
. Ну и в современном CentOS/RHEL 8 yum
как команда доступен, хоть и является симлинком на dnf-3
mkdir -p olga/dir--{00{1..9},0{10..99},100}
можно заменить на
mkdir -p olga/dir--{000..100}
Результат будет такой же, а команда выглядит короче, проще и понятнее.
Т.е. достаточно просто явно указать один раз диапазон и заполняющие нули (возьму на вооружение).
Может кто подсказать, как изменить последовательность загрузки сервисов при автозагрузке, чтобы, грубо говоря, nginx стартовал гарантированно после загрузки unbound?
[Unit]
After=mysql.service
Причём лучше не редактировать /usr/lib/systemd/system/nginx.service
, а сделать override в /etc/systemd/system/nginx.service.d/something.conf
В винде легко подхватить вирус, в линуксе это практически невозможно.
Серьезно?
Вижу спецификация к вашей статье разрастается как у Бьерна Страуструпа, от сюда просьба
не могли бы вы добавить картинку Торвальдса в плаще с вытянутой вверх рукой в начало статьи?
Здорово! Спасибо за необычную подачу.
Новичку надо не гонять по папкам и ставить софт, а сначала осмотреться. То есть, самое первое нужны команды поиска, сортировки, чтения и конвейеры. ls, cat, find, grep, less, more, tail, head, ps и прочие. И к каждой команде надо поиск и сортировку. То есть, ls обязательно с сортировкой по имени, дате, и с grep. Магия «что угодно» | grep «что надо» должна привлечь новичка и наглядно показать почему так удобнее и быстрее-то. На этом этапе можно перенаправление ввода/вывода, а можно сразу поиск внутри текста с vi и без vi.
Потом надо бы составить представление о компуктере (проц, матерная плата, память, диски, контроллеры, сетевые карты), посмотреть список служб и заданий, посмотреть чего куда смонтировано, кто заходит в систему и кто сейчас подключен и т.д. То есть, всякие lsblk, lscpu, free, dmesdg, mount, fstab, crontab и конечно systemctl
Потом файловые ссылки, базовые навыки network manager и ip — и можно уже что-то создавать полезное. Файлы куда-то копировать, коммандеры ставить и пакетные менеджеры осваивать
Спасибо! Я новичок, по сути.
их — океан! На любвлнй вкус, цвет, запах.
обёртки, оболочки обёрток…
расказали про компиляцию рара, изабыли про ауру (AUR).
не факт что все пакеты необходимые для компиляции существуют в системе (частая проблема).
ручная установка убивает автоматическое разруливание зависимостей в системе.
На текущий момент, в системах с пакетным менеджером, правильно скомпилировать исходный код в установочный пакет, и потом полученный пакет установить через пакетный менеджер.
У вас в разделе как создать архив команда:
tar -cvf archive.tar.gz /home/test
фактически создает несжатый архив archive.tar
Ей не хватает ключика z для собственно сжатия.
tar czvf archive.tar.gz /home/test
Благодарю за старания! Хороший материал! Люблю, когда все расписано со ссылками)
hostname -I
Неправильно (заглавная I). Правильно так:
hostname -i
Основные linux-команды для новичка