Верхняя записьLinux. Основные программы.
Book
manofideas
Полезные программы:
lsb_release -a - показать версию ОС
ls - показать содержимое папки
pwd - показать текущую папку
whoami - показать текущего пользователя
clear - очистить экран терминала
date - показать текущую дату и время
echo <text> - вывести заданный текст на экран.
; - разделитель команд

echo one; echo two - вывести на экран слова one и two в два ряда

Инструкции:
man <program name> - показать инструкцию к программе
man  -k <name> - поиск инструкции к программе
apropos - то же, что man -k

man ls - показывает инструкцию к программе ls
man -k rsync - показывает все инструкции, в названии которых есть rsync

info <program name> - показать инструкцию к программе в другом формате

<program name> --help - показать краткую инструкцию к программе в терминале

ls --help - показывает краткую инструкцию к программе ls

whereis <program name> - показать расположение программы и инструкции для неё

whereis ls - показывает расположение программы ls, а также инструкции для неё

which <program name> - показывает расположение программы

Чтение и редактирование файлов:
/var/log - папка, где хранятся логи.

cat - вывести содержимое файла на экран

cat file.txt - выводит содержимое файла file.txt в терминал

less - программа для чтения файлов. Может открывать файлы, сжатые gzip.

less file.txt.gz - открывает файл file.txt.gz

more - просмотр файлов, постраничное пролистывание
vi - редактор, есть во всех дистрибутивах Linux. Два режима. Клавиша i переключает в режим редактирования, esc - в режим ввода команд. Команды: :w - сохранить файл, :wq - сохранить файл и выйти из программы, :q - просто выйти из программы, :q! - выйти без сохранения

head - показать первые десять строк в файле
tail - показать последние десять строк в файле
tail -<number> - показать заданное количество строк в конце файла
tail -f - показать последние десять строк и обновлять файл в реальном времени

tail -50 file.txt - показывает последние 50 строк в файле file.txt

Поиск:
find <where> - поиск в указанном месте

find . -name "file*" - найти в текущей папке (.) все файлы содержащие file

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

find . -type f | grep file - найти в текущей папке (.) все файлы (-type f) и выбрать те, в которых встречается слово file
grep abc file.txt - найти в файле file.txt строку abc
cat file.txt | grep abc | grep cde - вывести содержимое файла file.txt, найти в нём все строки, в которых встречается сочетание abc, а потом выбрать из этих строк те, в которых встречается сочетание cde.

^ - указатель начала строки
$ - указатель конца строки
. - указатель любого символа

grep ^ab file.txt - найти в файле file.txt все строки, начинающиеся с сочетания ab
grep abcd$ file.txt - найти в файле file.txt все строки, заканчивающиеся сочетанием abcd
grep ab.de file.txt - найти в файле file.txt все строки, содержащие сочетания ab и de c любым символом между ними

Переменные:
a=word - задание переменной a значения word
echo $a - вывести переменную a на экран
Метки:

Заметки об английском. Conditionals. Inversion.
Book
manofideas
Conditional 0 (Zero). If + Present Simple => Present Simple

Выражает факты, которые всегда являются правдой.

Не является настоящим conditional. Вместо if можно использовать when.

If you heat ice, it melts.
It is easier to relax if you close your eyes.

Conditional 1 (First Conditional). If + Present Simple => Future Simple

Показывает ситуации, которые могут произойти с высокой степенью вероятности.

Иногда можно добавлять would для большей вежливости.

Также в случае повелительного наклонения или просьбы можно использовать Present Simple вместо Future Simple.

Вместо Present Simple можно использовать Present Continuous для выражения текущего действия или будущего соглашения.

Можно использовать Present Perfect вместо Present Simple для подчёркивания того, что одно действие зависит от другого.

Не рекомедуется использовать should вместо will в главном предложении. Но можно использовать should или happen to в предложениях с if, если события маловероятны.

Кроме того можно использовать may, might, could вместо will для уменьшения вероятности события в главном предложении.

If I see her tomorrow, I will speak to her. Я часто её вижу, так что вероятность того, что я её увижу и заговорю с ней завтра высока.
If I see her tomorrow, I may/might/could speak to her. Вполне возможно, что я заговорю с ней завтра, но не точно.
If anything changes, I will let you know. Вероятность того, что что-то изменится высока.
I will give you the book if you give me the pen. Я однозначно дам тебе книгу в обмен на ручку.
If you would follow me, I will show you your room. Здесь would выражает вежливое обращение.
If you see him, give him this book. Повелительное наклонение.
Could you give him this book if you see him? Просьба.
If you are looking for him, you will find him upstairs. Ты ищешь его прямо сейчас. Используется Present Continuous.
If I have finished writing my paper by tonight, I will go out. Я пойду гулять, если закончу работу. Используется Present Perfect.
If you should/happen to see him, say hi from me. Используется should или happen to для указания того, что скорее всего ты его не встретишь, но вдруг.

Conditional 2 (Second Conditional). If + Past Simple => would + infinitive

Показывает ситуации с низкой вероятностью возникновения и гипотетические ситуации.

При применении глагола to be в Conditional 2 используется форма were, даже с I.

Можно использовать Past Continuous вместо Past Simple для выражения продолжающихся действия, которые могли бы теоретически происходить.

Также можно применять would в предложении с if для выражения просьбы. При этом можно вообще не использовать главное предложение.

Не рекомедуется использовать should вместо would.

Здесь можно использовать might, could вместо would для уменьшения вероятности события в главном предложении. May использовать нельзя.

If I saw her tomorrow, I would speak to her. Я не уверен, что увижу её завтра.
If I saw her tomorrow, I might speak to her. Возможно я заговорю с ней, если вообще увижу.
If anything changed, I would let you know. Скорее всего ничего не изменится, но если вдруг, то я сообщу.
I would give you the book if you gave me the pen. Есть вероятность, что я дам тебе книгу в обмен на ручку.
If I had a lot of money, I would buy a house. У меня нет большого количества денег, но если бы были, то я бы купил дом.
If I were you, I wouldn't do it. Я не на твоём месте, но если бы был, то этого бы не делал.
If I lived by the sea, I would be lying on the beach right now.
If it wasn't raining, we would have lunch outside. Сейчас идёт дождь, но если бы не шёл, то мы могли бы поесть на улице. Используется Past Continuous.
If you would just fill in this form. Просьба. Главное предложение не используется.

Conditional 3 (Third Conditional). If + Past Perfect => would have + past participle (3-я форма глагола)

Показывает гипотетические ситуации в прошлом, когда уже поздно что-то менять сейчас.

Можно использовать Past Perfect Continuous для выражения продолжающихся гипотетических действий в прошлом.

Не рекомедуется использовать should вместо would.

Could + perfect infinitive в предложении с if используется для выражения возможности повлиять на события.

Также можно использовать might, could вместо would для уменьшения вероятности события в главном предложении. Нельзя использовать may.

If I had seen her, I would have spoken to her. Я не видел её вчера, но если бы увидел, то поговорил бы.
If anything had changed, I would have let you know. Ничего не поменялось, но если бы вдруг что-то изменилось, то я бы предупредил.
I would have given you the book if you had given me the pen. Ручку я так и не получил, но если бы получил, то я дал бы тебе книгу.
If I had been living there at the time, I would have gone to the show. Если бы я там продолжал жить, то я бы посетил представление. Используется Past Perfect Continuous
If I could have known this would happen, I would never have done it.

Mixed conditionals

В определённых случаях можно использовать смешанные предложения с условием.

If + third conditional => second conditional

Используется для связи реального или нереального события в прошлом с нереальным результатом в настоящем. Такие предложения используются, когда мы сожалеем о событиях в прошлом.

If we had followed the sign, we wouldn't be lost now. В реальности мы всё-таки проигнорировали знак и заблудились, но если бы мы пошли по знаку, то возможно бы не заблудились.
If I had won the lottery, I would be rich. На самом деле я не выиграл в лотерею и не стал богатым.

if + second conditional => third conditional

Используется для описания текущего состояния в связи с возможными событиями в прошлом.

If I spoke better English, I could have got the job. Я не получил работу, т.к. не говорю по-аглийски достаточно хорошо.
If I didn't have to work so much, I would have gone to the party last night. Но у меня было много работы и поэтому я не пошёл на вечеринку.

Inversion

В некоторых обстоятельствах в предложениях с условием можно опускать if, формируя условие путём перестановки слов. Используется в формальном и литературном английском для подчёркивания важности сказанного.

Инверсия используется:

1. В conditional 3 с глаголом had.

При этом нельзя применять сокращение hadn't при инверсии. Только had not.

If I had known about it, I wouldn't have done it. Conditional 3.
Had I known about it, I wouldn't have done it. Используется инверсия.
If you hadn't refused my invitation, we would have had a great time.
Had you not refused my invitation, we would've had a great time. Инверсия с had not.

2. С глаголом should, когда речь идёт о событиях в настоящем или будущем.

Опять же нельзя использовать сокращение shouldn't при инверсии. Только should not.

If you don't want to sign a contract, try to let them know before the end of this month. Conditional 1.
Should you not wish to sigh a contract, you must let them know. Инверсия с использованием should.
If you should change your mind, let me know.
Should you change your mind, let me know.

3. С глаголом were когда речь идёт о вероятном будущем.

Сокращение weren't не используется при инверсии. Только were not.

If she were to find out about it, she would freak out. Conditional 2.
Were she to find out about it, she would freak out. Инверсия с were.
If it weren't for him, we wouldn't know what to do.
Were it not for him, we wouldn't know what to do.

Заметки об английском. Past Perfect.
Book
manofideas
Past Perfect используется, когда нужно показать, что какое-то событие в прошлом произошло раньше другого. Формируется с помощью had + past participle (3-я форма глагола). Относится только к событиям в прошлом и не используется само по себе. Нельзя сказать просто I had gone без указания события, которое произошло после этого. Событие, произошедшее позже, всегда стоит в Past Simple.

When I arrived, they had already left. Они ушли раньше, чем я пришёл, поэтому используется had left.
I was sure that I had seen him before. Я видел его раньше, чем был уверен в этом.

В предложениях с past perfect можно указывать период времени.

I had lived in Moscow for a year before I moved to London. В Москве я жил раньше, чем переехал в Лондон, поэтому используется had lived.

Также можно указывать конкретное время. В отличие от present perfect, где этого делать нельзя.

Jonh went to the bank at 11 o'clock and then realised his wife had already been at 10 o'clock. Жена Джона была в банке в 10 часов и это было раньше, чем туда пошёл Джон.
It had started to snow by 10 a.m. yesterday. К 10 часам утра вчера снег уже шёл.

Кроме того Past Perfect используется, когда нужно превратить прямую речь в косвенную.

She said to me: "I have had my breakfast and now I'm going to work" - прямая речь. Present Perfect - have had breakfast
She told me that she had had her breakfast and was going to work - косвенная речь. Past Perfect - had had breakfast

В случаях, если события в прошлом произошли одно за другим или в одно время, то можно использовать Past Simple вместо Past Perfect.

He said hello when he arrived. Он пришёл и сразу сказал привет.
She switched off the light before she went to bed. Он выключила свет и сразу пошла спать. Также можно сказать she had switched off the light.
I left as soon as we finished. Я ушёл сразу после того как мы закончили дело. Можно сказать as we had finished.

Past Perfect необязательно используется в сложных предложениях. Можно использовать past perfect в отдельном предложении, если до него указано событие, которое произошло позже в прошлом.
I didn't know who she was. I had never seen her before. Используется Past Perfect, т.к. предыдущее предложение указывает на то, что речь идёт о прошлом. Я не видел её раньше, чем не знал кто она.
Для сравнения:
I don't know who she is. I have never seen her before. Используется Present Perfect, т.к. события происходят в настоящем и нет события, которое произошло после того как я её никогда не видел до этого.

Наконец Past Perfect используется при построении предложений 3-его типа, начинащихся с if (third conditional). Строятся по формуле if + Past Perfect -> would have.
If I had known about it, I wouldn't have done it.
I would have spoken to her if I had seen her.

Cisco. Настройка Etherchannel.
Book
manofideas
Etherchannel - термин Cisco для объединения нескольких соединений в одно. Также называется LAG (link aggregation).

В связи с особенностью алгоритма, имеет смысл объединять только соединения в количестве кратным 2-м. То есть 2, 4 или 8.

Etherchannel распределяет трафик неравномерно. На основе порта отправителя и порта назначения алгоритм решает по какому соединению отправлять пакеты и после этого всегда использует это соединение.

PAgP - проприетарный протокол Cisco. LACP - стандарт индустрии.

Настройка Etherchannel:
3 режима работы:
ON - просто включает Etherchannel или LAG, но ничего не делает.
Desirable (PAgP), Active (LACP) - в этом режиме порт стремится установить Etherchannel или LAG с другим портом.
Auto (PAgP), Passive (LACP) - порт готов работать в Etherchannel или LAG, но не пытается активно установить соединение.

Рекомендуется использовать комбинацию Desirable (Active) с одной стороны и Auto (Passive) с другой. Комбинация desirable - desirable также будет работать.

Все порты в Etherchannel должны быть настроены одинаково (speed, duplex, mode, vlans). После объединения в Etherchannel все изменения нужно производить на виртуальном порту. Номер виртуального порта на двух коммутаторах в Etherchannel может не совпадать.

channel-group - настройка Etherchannel

interface range gi0/1 - 2
channel-group 10 mode desirable - создаёт виртуальный порт 10 для Etherchannel и включает режим desirable для портов gi0/1 и gi0/2

show etherchannel summary - показать статистику по etherchannel
Метки:

CentOS. Подключение к удалённому рабочему столу.
Book
manofideas
VNC
Можно подключаться к удалённому серверу CentOS через клиент VNC. Для этого в Remote Desktop Preferences нужно дать разрешение на подключение пользователей, а также установить пароль. Кроме того необходимо открыть порт tcp 5900. Не рекомендуется.

SSH
ssh <username>@<server ip> - подключиться к серверу через ssh. Username - имя пользователя, server ip - ip-адрес сервера, к которому нужно подключиться.

ssh man@192.168.1.15 - подключает к серверу 192.168.1.15 под учётной записью man

VNC через SSH
ssh -L <local port>:<server ip>:5900 <username>@<server ip> - создать локальный туннель через ssh до сервера. Local port - порт на локальной машине, server ip - ip-адрес сервера, к которому нужно подключиться.

ssh -L 5999:192.168.1.15:5900 man@192.168.1.15 - перенаправляет локальный порт 5999 к порту 5900 на сервере 192.168.1.15.

После создания туннеля, можно использовать клиент VNC для подключения к серверу, но в имени сервера указать localhost:5999.
Метки:

CentOS. Настройка SELinux.
Book
manofideas
/etc/sysconfig/selinux - файл, где хранятся настройки режимов SELinux

enforcing - включает SELinux
permissive - записывается лог нарушений безопасности, но никаких действий SELinux не предпринимает
disabled - отключает SELinux

ls -Z - показывает список файлов и папок с контекстом SELinux
ps -Z - показывает список запущенных программ с контекстом SELinux
netstat -Z - показывает список сетевых портов с контекстом SELinux

chcon -t <type> <file/folder> - изменить контекст SELinux для файла или папки. Нужно указать необходимый тип контекста.

chcon -t httpd_sys_content_t file.html - изменить тип контекста SELinux для файла file.html

restorecon -vR <folder> - изменить контекст SELinux для папки и файлов в ней (флаг R). Указывать тип при этом не нужно.

yum install setroubleshoot-server - установить программу для устранения ошибок SELinux
service auditd restart - перезапустить лог аудитов

/var/log/messages - файл, куда setroubleshoot записывает лог

getsebool -a - показать список всех доступных булевых значений SELinux

setsebool [-P] booloption on/off - включить/выключить нужное булевое настройку. -P делает изменение постоянным (permanent). Вместо on/off можно использовать 1/0.

setsebool -P httpd_read_user_content 1 - присваивает булевому настройке httpd_read_user_content значение 1, тем самым включает её

/etc/selinux/targeted/modules/active/booleans.local - файл, где хранятся все включенные булевые настройки SELinux в системе
Метки:

CentOS. Запуск программ по расписанию. Настройка времени.
Book
manofideas
Настройка времени
ntpdate <ntp server> - устанавливает время в системе, согласно указанному ntp-серверу. Можно использовать pool.ntp.org. Если ntpd запущен, то выдаст ошибку.

service ntpd start - запускает программу ntp, которая следит за временем постоянно.

Запуск программ по расписанию
Можно положить программу в одну из этих папок:
/etc/cron.hourly/ - программы в этой папке запускаются ежечасно
/etc/cron.daily/ - программы в этой папке запускаются ежедневно
/etc/cron.weekly/ - программы в этой папке запускаются еженедельно
/etc/cron.monthly/ - программы в этой папке запускаются ежемесячно

Если необходимо запускать программу по особому расписанию, то можно внести изменения в файл /etc/crontab, либо создать новый файл в папке /etc/cron.d/. Расписание в файле задаётся в особом формате.

* * * * * user-name command

Первое значение - это минута. Второе - час. Третье - день месяца. Четвёртое - месяц. Пятое - день недели. Все звёдочки означают, что каждую минуту, каждого часа, каждого дня, каждого месяца, каждого дня недели запускать необходимую команду от имени указанного пользователя.

*/10 * * * * man /usr/bin/program - каждые десять минут запускать программу /usr/bin/program от имени пользователя man
53 23 * * * newman /usr/bin/program - каждый день в 23.53 запускать программу /usr/bin/program от имени newman

crontab -e - создать персональное расписание, которое будет запускаться от имени конкретного пользователя (команду запускать под пользователем). В нём поле user-name заполнять не надо.
Метки:

CentOS. Установка программ.
Book
manofideas
Поиск пакетов
yum search <package name> - поиск пакетов для установки

yum list - показать все доступные для установки пакеты

yum list installed - показать все пакеты установленные в системе

yum grouplist - показать все группы пакетов

yum info <package name> - показать информацию о пакете

yum repolist all - показать все доступные в системе репозитории

Установка пакетов
yum install <package name> - установить пакет

yum remove <package name> - удалить пакет

yum update <package name> - обновить пакет. Если не указывать имя пакета, то обновит все пакеты, нуждающиеся в обновлении. Можно использовать также команду yum upgrade.

yum groupinstall <group name> - установить группу пакетов

yum localinstall <package name>- установить rpm-пакет, скачанный заранее
Метки:

CentOS. Настройка сети и firewall.
Book
manofideas
ifconfig - показать текущие сетевые настройки

dig - опросить dns сервер по умолчанию с целью определения адреса

dig google.com - возвращает ip-адрес google.com, если dns работает

route - показать таблицу маршрутов ip-адресов

Статический ip-адрес
/etc/sysconfig/network-scripts/ - папка, где хранятся настройки сети. Нужно редактировать файл типа ifconfig-eth0
BOOTPROTO="static"
NETWORK="192.168.1.0"
IPADDRD="192.168.1.5"
NETMASK="255.255.255.0"
NM_CONTROLLED="no"

/etc/sysconfig/network - файл, куда нужно добавлять настройку шлюза. Hostname должен быть полным доменным именем.
HOSTNAME=mynet.domain.com
GATEWAY=192.168.1.1

/etc/resolv.conf - файл, куда нужно добавлять настройку dns
search domain.com
nameserver 192.168.1.1

Настройка firewall
system-config-firewall-tui - настройка firewall из командной строки

/etc/sysconfig/iptables - файл, где хранятся настройки firewall
Метки:

CentOS. Добавление/удаление локальных пользователей и групп. Изменение паролей.
Book
manofideas
/etc/passwd - информация об учётных записях в системе
/etc/shadow - информация о пользовательских паролях
/etc/group - информация о группах
/etc/gshadow - информация о групповых паролях

Пользователи
useradd - добавить локального пользователя

useradd newman - создаёт пользователя newman с параметрами по умолчанию

usermod - изменить параметры существующей пользовательской учётной записи

usermod -s /bin/false newman - изменяет shell для пользователя newman. В данном случае пользователь не сможет войти в систему

userdel - удалить учётную запись пользователя

userdel -r newman - удаляет пользователя newman вместе с его домашней папкой

Группы
groupadd - создать новую группу

groupadd grnewman - создаёт группу grnewman

groupmod - изменить параметры существующей группы

groupmod -g 2546 grnewman - изменяет id группы grnewman

groupdel - удалить группу

groupdel grnewman - удаляет группу grnewman

groups - показать в какие группы входит пользователь

groups newman - показывает группы, в которые входит пользователь newman

Пароли
passwd - изменить пароль пользователя. Под root можно изменить пароль любого пользователя.

passwd newman - изменить пароль пользователя newman

chage - изменить параметры смены пароля учётной записи. По умолчанию пароль никогда не устаревает.

chage -l newman - показывает текущие настройки пароля для учётной записи newman
chage -m 3 newman - изменяет минимальное количество дней для смены пароля
Метки:

?

Log in