Архив рубрики: Linux

Ваш путеводитель по одной из самых популярных и влиятельных операционных систем в мире. От базовых команд и установки дистрибутивов до глубокого изучения ядра и сетевых технологий — здесь вы найдете статьи и руководства на самые разные темы, связанные с Linux. Независимо от вашего уровня подготовки, здесь найдется что-то интересное и полезное.

Проброс портов VirtualBox

VirtualBox - одна из самых популярных сред виртуализации, которые используются для запуска различных операционных систем. И довольно часто случается ситуация, что вам необходимо получить доступ к какому-либо сервису гостевой системы из основной, например, веб-серверу или ssh. Но по умолчанию сетевые интерфейсы изолированы и такой возможности нет.

Для решения этой задачи можно пойти двумя путями. Мы можем пробросить необходимый порт виртуальной машины в основную систему или же выдать виртуальной машине отдельный IP адрес, что позволит обращаться к любым ее портам и использовать любые сетевые возможности. В этой небольшой статье мы рассмотрим проброс портов virtualbox двумя способами. Начнем с более простого.
Читать далее Проброс портов VirtualBox

Установка FreeBSD 11

Многие Linux пользователи уже слышали про FreeBSD, эта система использует ядро BSD, похожее на Linux, поскольку оба ядра основаны на Unix и поддерживают одни и те же стандарты POSIX. Это такая же свободная, бесплатная операционная система с открытым исходным кодом, разработанная для обеспечения максимальной безопасности и гибкости. Чаще всего она используется на серверах. Основное отличие от Linux в том, что разработкой ядра и программного обеспечения занимается одна команда разработчиков.

FreeBSD поддерживает множество различных процессорных конфигураций, от серверов до микрокомпьютеров, таких как Raspberry Pi. Как и Linux, система поставляется с множеством программ, которые можно очень просто установить с помощью портов. Всего доступно более 20 000 пакетов. В этой инструкции мы рассмотрим как выполняется установка FreeBSD 11 последней, на данный момент, версии на компьютер amd64. Будем устанавливать версию с интерфейсом командной строки, она лучше всего подходит для серверов.

Читать далее Установка FreeBSD 11

Bash скрипты Linux

Среди системных администраторов и обычных пользователей Linux достаточно популярна практика писать Bash скрипты для автоматизации и облегчения выполнения определенных задач в операционной системе. Фактически, вы написали один раз порядок действий, которые нужно выполнить, расписали файлы и так далее, а затем просто пишите одну короткую команду и все действия выполняются как нужно. Можно пойти еще дальше и запланировать автоматическое выполнение скрипта.

В этой небольшой статье мы собрали самые полезные Bash скрипты Linux, которые вы можете использовать в своих системах. Некоторые из них состоят из нескольких строк, некоторые помещаются в одну строку. Здесь есть как небольшие сниппеты, которые вы можете использовать в своих скриптах, так и полноценные интерактивные скрипты, для работы с ними через консоль.

Полезные Bash скрипты Linux

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

Команды

Первый скрипт сортирует содержимое текущей папки по размеру:

du -a -d 1 -h | sort -h

Но в большинстве случаев это не эффективно, вам намного удобнее будет использовать утилиту ncdu. Вам нужно быстро создать пароль и вы не хотите устанавливать pwgen, можете использовать такую команду:

< /dev/urandom tr -dc '[:punct:][:alnum:]' | head -c${1:-16};echo;

Эта команда запускает простейший HTTP сервер в текущей папке. Очень удобно для отладки чего либо:

python -m SimpleHTTPServer

С помощью команды at можно запланировать выполнение произвольной команды один раз в указанное время, например, в полночь:

echo "ls -l" | at midnight

Скрипт передает звук от вашего микрофона на другой компьютер по ssh. Качество будет очень плохим, но тем не менее это работает:

dd if=/dev/dsp | ssh -c arcfour -C username@host dd of=/dev/dsp

 

Хотите скачать весь сайт на компьютер для того, чтобы потом иметь возможность просматривать его оффлайн? Для этого достаточно утилиты wget:

wget --random-wait -r -p -e robots=off -U mozilla https://kovalets.net

Будут загружены все файлы сайта, включая изображения, игнорированы правила из файла robots.txt и в качестве агента пользователя будет сообщаться Mozilla Firefox. А такой командой можно реализовать самый простой таймер:

time read (ctrl-d для остановки)

Выводит команды bash, которые используются чаще всего:

history | awk '{a[$2]++}END{for(i in a){print a[i] " " i}}' | sort -rn | head

Такой командой вы можете выводить символы с небольшой задержкой, как в фильмах:

echo "Взлом пентагона.......... ОШИБКА ОШИБКА" | pv -qL 10

Записать видео с экрана в терминале linux:

ffmpeg -f x11grab -r 25 -s 800x600 -i :0.0 /tmp/outputFile.mpg

Запустит команду через указанный промежуток времени, в данном случае, через 5 секунд:

timeout 5s команда

Удаляет все пустые папки:

find . -type d -empty -delete

Это были самые популярные и полезные команды с точки зрения ресурса commandlinefu.com. А теперь нам нужно рассмотреть сниппеты bash, которые вы можете использовать в своих проектах.

Сниппеты Bash

Допустим, вы хотите засечь сколько времени выполняется определенное действие в вашем Bash скрипте, для этого добавьте там, где нужно начать замер строку:

START=$(date +%s)

А там, где нужно прекратить:

END=$(date +%s)
DIFF=$(( $END - $START ))
DIFF=$(( $DIFF / 60 ))

Переменная DIFF будет содержать время выполнения в минутах. Теперь вы можете вывести ее с помощью echo.

Скрипты довольно часто требуют ввода параметров для правильной работы. Этот сниппет позволяет достаточно просто разбирать переданные параметры:

while [ "$1" != "" ];
do
case $1 in
-s ) shift SERVER=$1 ;;
-d ) shift DATE=$1 ;;
--paramter|p ) shift PARAMETER=$1;;
-h|help ) # выведите сообщение с подсказкой
* ) # другие параметры

Тут мы присваиваем значение параметра переменной в зависимости от того какой буквой он обозначен. Например, для такого вызова:

parameter_test.sh -s kovalets -d 20170916 --parameter Subscribe!

Переменной SERVER будет присвоено значение kovalets, DATA - 20170916 и PARAMETER - Subscribe. Как это работает? Если кратко, то мы всегда используем первый параметр, и используем команду shift, чтобы сдвинуть стек с параметрами влево, когда текущий первый параметр больше не нужен.

Дальше, если вам нужно убедиться, что важные параметры заданы, можно просто проверить на существование эти переменные:

if [ -z $SERVER ] || [ -z $DATE ]; then
echo "Необходимо указать сервер и дату";
exit 1;
fi;

Рабочая директория скрипта имеет важное значение, если вам нужно сохранить какие-либо данные в файловую систему. Лучше выполнять команды в правильной директории. Также нужно проверить есть ли у текущего пользователя права на запись в текущую папку. Создайте такую функцию:

changedir(){
DIR_NAME=$1

 

# Проверяем существует ли папка
[ -d "$DIR_NAME" ] || {
echo Dir: $DIR_NAME does not exist
exit 1
}

# Проверяем доступ на чтение
[ -r "$DIR_NAME" ] || {
echo Dir: $DIR_NAME not readable
exit 2
}
# Проверяем доступ на выполнение
[ -x "$DIR_NAME" ] || {
echo Dir: cannot cd to $DIR_NAME
exit 3
}
# Проверяем доступ на запись
[ -w "$DIR_NAME" ] || {
echo Dir: $DIR_NAME not writeable
exit 4
}
cd $DIR_NAME
echo "Present directory $DIR_NAME"
}

 

Затем, чтобы в скрипте безопасно изменить текущую папку на нужную добавьте:

changedir /путь/к/папке

Иногда может понадобится узнать результат работы предыдущей команды. Для этого используйте переменную $?:

if [ $? -ne 0 ]; then
echo "Команда завершена неудачно";
fi;

Для записи логов с текущим временем и датой создайте такую функцию:

log() {
echo [`date +%Y-%m-%d\ %H:%M:%S`] $*
}

Следующий сниппет используется часто в скриптах, которые зависят от состояния других системных процессов. Например, может понадобиться убедиться, что MySQL отключен прежде чем выполнять определенные действия.

check_process() {
echo "Checking if process $1 exists..."
[ "$1" = "" ]  && return 0
PROCESS_NUM=$(ps -ef | grep "$1" | grep -v "grep" | wc -l)
if [ $PROCESS_NUM -ge 1 ]; then
return 1
else
return 0
fi
}

Теперь вернемся к нашему примеру с MySQL и используем только что написанную функцию:

check_process mysql;
CHECK_RET=$?;
if [ $CHECK_RET -ne 0 ];
# если процесс запущен
else
# если процесс не запущен
fi;

Иногда может понадобиться загрузка значений переменных из файла. Сначала создаем файл с переменными:

key1=value1
key2=value2

Затем просто добавьте такую строку вначале скрипта, при условии, что конфигурационный файл находится в этой папке и называется configfile:

. configfile

Значения будут загружены в переменные $key1 и $key2. Если нужно перебрать все файлы в текущей папке или файлы, по определенному шаблону, используйте такой цикл:

#!/bin/bash
PATH=/path/to/dir/FILES=*.sql
for f in $PATH$FILES
do
# Что-то делаем с каждым файлом $f
done

Следующую функцию вы можете использовать для отправки email сообщений из ваших скриптов. Все что нужно, это указать текст сообщения, тему и список адресов получателей. Вот сама функция:

sendEmail() {
echo $content | mail -s "$subject" $email_list exit;
}

Выводы

В этой статье мы рассмотрели полезные bash скрипты linux, которые вы можете использовать при работе с системой. Сначала мы разобрали несколько полезных комбинированных команд, а затем несколько полезных снипетов. Если вы хотите более детально разобраться в создании скриптов, смотрите статью написание скриптов на Bash.

https://youtu.be/Vy5iq8GBlxw

Операционные системы Linux для смартфонов

Android использует ядро Linux, но его не причисляют к дистрибутивам Linux. А всё потому, что дистрибутив – это не только ядро, но ещё и службы и утилиты GNU. Android их не имеет, вместо этого используются свои библиотеки, вроде Android Runtime (ART). Поэтому давайте рассмотрим операционные системы, использующие Linux, не зависящие от библиотек Google.

Недавняя история с Huawei показала с какой лёгкостью можно использовать IT-компании в большой политике. С открытым программным обеспечением такой трюк провернуть не получится, а это значит, что свободные операционные системы могут стать основой для смартфонов будущего. Давайте узнаем, какие мобильные операционные системы разрабатываются на сегодняшний день.

Читать далее Операционные системы Linux для смартфонов

Как сделать общую папку в VirtualBox

Если вы часто работаете с виртуальными машинами, то довольно часто возникает необходимость обменяться файлами между виртуальной машиной и реальной системой. Виртуальные машины часто используются для тестирования новых систем, программного обеспечения или для пользователей Linux это еще один способ иметь под рукой полноценную Windows, запущенную одновременно с основной операционной системой.

В этой небольшой статье мы рассмотрим как сделать общую папку в Virtualbox. Для этого можно было бы использовать различные обходные пути, например, применять USB накопитель, доступный в обоих системах, но это лишнее, все что нужно поддерживается по умолчанию.
Читать далее Как сделать общую папку в VirtualBox

Как проверить скорость загрузки сайта

Скорость загрузки сайта - это крайне важный параметр. Чем быстрее загружается сайт, тем меньше пользователю приходится ждать и тем больше пользователей находят то, что им нужно. В свою очередь, поисковые системы награждают сайты, которые работают быстрее и показывают их выше в поиске.

Но чтобы оптимизировать скорость работы сайта нужно сначала проверить ее, определить есть ли проблема и где именно, а уже потом устранить. В этой статье мы рассмотрим как проверить скорость загрузки сайта с помощью различных сервисов, а также как понимать полученные значения и что с ними делать.

Какой должна быть скорость?

Наверное, вы встречали сайты, которые грузятся слишком долго, и вы открывали другие вкладки и занимались другими делами пока страница полностью загрузится. Вот так быть не должно. Можно выразить все это в цифрах:

  • 0,1-0,5 секунды или 100-500 мс - мгновенно, пользователь даже не заметить никаких задержек. Другое дело, что такая скорость загрузки невозможна для современных сайтов, переполненных различными изображениями, скриптами и стилями;
  • 1 - 3 секунды - оптимальный вариант, пользователь заметит небольшую паузу, но это не вызовет раздражения и он продолжит работу на сайте. К такому результату нужно стремиться;
  • 5-10 секунд и больше - очень плохо, пользователю придется ждать и он может попросту уйти, или, по крайней мере у него останется неприятное впечатление о сайте.

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

Проверка скорости загрузки сайта

1. Google Chrome

Самый первый инструмент, который стоит использовать - это ваш браузер. Тут вы можете детально посмотреть с какой скоростью загружается страница у вас и какие элементы создают большую нагрузку. Откройте ваш сайт, например, главную страницу, и нажмите сочетание клавиш Ctrl+Shift+J, затем перейдите на вкладку "Perfomance":

 

Браузер предложит вам нажать кнопку F5, чтобы обновить страницу и записать сеанс, после этого отобразиться скорость загрузки:

 

Внизу страницы мы видим результат, она загружена за 8,1 секунды, это плохо, но первые элементы на странице появились уже в 2 секунды, а значит пользователи не почувствовали много неудобств. Тут вы можете найти множество полезной информации, какие материалы грузились долго можно посмотреть развернув надпись "Network":

 

Например, у меня время загрузки для различных стилей составляет около 400 мс, это много. Сворачиваем "Network" и смотрим "Frames". Синий индикатор показывает, когда завершилась загрузка основных компонентов и пользователь увидел первые элементы на странице (DOM Loaded):

Загрузка элементов отображается на графике "Main", синим - HTML код, желтым - скрипты, зеленым - медиа данные, розовым - стили.

 

Здесь вы можете узнать множество полезной информации о загрузке страницы сайта, но тут есть несколько минусов. Во-первых, слишком сложный интерфейс, во-вторых, это актуально только для вашего интернета, для других компьютеров все может быть по-другому. Поэтому нужно еще использовать онлайн сервисы.

2. Pingdom tools

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

Страница загрузилась за 7.22, почти тот же результат, что и в Google Chrome и при этом со страницы было отправлено 115 запросов различных файлов и общий вес страницы 1,9 мегабайт.

Еще ниже находится полная диаграмма скорости загрузки сайта. По ней вы тоже можете определить какие ресурсы грузятся долго.

Можно отсортировать по "Load Time" в поле "Sort by":

Дальше, при анализе стоит обратить внимание на шкалу загрузки каждого файла. Обозначения:

  • Розовый - время получения IP по DNS;
  • Пурпурный - время установки соединения SSL;
  • Синий - ожидание подключения к серверу;
  • Оранжевый - время передачи данных;
  • Желтый - время ожидания ответа сервера;
  • Зеленый - время, потраченное на загрузку данных.

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

На время получения DNS и рукопожатие SSL мы повлиять не можем, и оно выполняется только один раз. Далее подключение к серверу, зависит от нагрузки на сеть, можно оптимизировать только одним путем - использовать https и новый протокол http2, тогда соединение будет выполняться только раз, а все данные будут передаваться в одном потоке.

Затем идет время ожидания ответа сервера. Этот параметр зависит от многих факторов - насколько долго запрос обрабатывается веб-сервером, php, загруженности сети и так далее. Время ожидание в 100 мс - это еще норма, но когда оно составляет 300 мс для статических файлов - это уже проблема. Допустим, на странице загружается 20 картинок, 20*300 - это уже шесть секунд, а возьмите статью, в которой картинок еще больше - 30, 50. Вот вам и время загрузки.

Время получения данных зависит от размера файлов, можно оптимизировать включением сжатия на лету, но это увеличит время ожидания Wait Time, или же сжав все заранее с помощью специальных утилит.

3. Host-tracker

Минус Pingdom в том, что там можно проверить скорость сайта только на заграничных ресурсах. Если нас интересует Россия, то лучшие использовать host-tracker:

Но здесь совой недостаток, загружается только html код страницы и все. Никакие изображения и вообще структура DOM загружены не будут. Например, в Москве, html код страницы загружается за 79 мс, а в Австралии за 2,5 секунды. Например, в Pingdom этот же показатель был примерно 800 мс. Тут не выполняется проверка скорости страниц сайта. Если вы хотите проверить скорость загрузки отдельного ресурса на странице, то вам нужно будет набирать его url отдельно.

4. Проверка скорости в терминале

Проверка скорости сайта в терминале Linux позволит получить больше всего необходимой информации, чтобы принять правильное решение по оптимизации. Мы выяснили, что самую большую проблему после проблемных файлов представляет время ожидания ответа веб сервера. Теперь нужно понять откуда оно берется. Утилита curl позволяет узнать скорость загрузки сайта, замерять время до получения первого байта, по сути, это и есть wait time + connect + dns + ssl + read. Команда выглядит вот так:

curl "https://kovalets.net" -s -o /dev/null -w "response_code: %{http_code}\n
dns_time: %{time_namelookup}\n\
connect_time: %{time_connect}\n\
AppCon time:\t%{time_appconnect}\n\
pretransfer_time: %{time_pretransfer}\n\
starttransfer_time: %{time_starttransfer}\n\
total_time: %{time_total}"

Значение каждой переменной:

  • time_namelookup - время преобразования домена в IP адрес;
  • time_connect - время установки соединения по TCP;
  • time_appconnect - время, затраченное на соединение SSL;
  • time_pretransfer - время, затраченное на подготовку к передаче данных;
  • time_starttransfer - время получения первого байта от сервера;
  • time_total - общее время загрузки страницы, только html, без скриптов и изображений.

Фактически здесь выходит, что время ожидания веб-сервера меньше 100 мс. Время отправки данных можно принять за 0, тогда wait time от pingdom будет time_starttransfer -  time-pretransfer. Мы можем проверить другой ресурс, например, изображение:

Здесь уже видим тот же wait time до 140 мс. Плохо, учитывая, что у серверов Google этот параметр до 5 мс. Дальнейший анализ нужно продолжить на вашем сервере. Мы посмотрим насколько быстро веб-сервер возвращает результат с помощью tcpdump. Дальнейшую инструкцию можно выполнить только на VPS/VDS, на хостингах у вас это не выйдет. Авторизуйтесь на вашем сервере по SSH и выполните там такую же команду:

$ curl "http://test.kovalets.net/wp-content/uploads/2017/07/Snimok-ekrana-ot-2017-07-31-18-56-04-300x169.png" -s -o /dev/null -w "response_code: %{http_code}\

dns_time: %{time_namelookup}\n\
connect_time: %{time_connect}\n\
AppCon time:\t%{time_appconnect}\n\
pretransfer_time: %{time_pretransfer}\n\
starttransfer_time: %{time_starttransfer}\n\
total_time: %{time_total}"

 

 

Результат будет совсем другим, моему серверу понадобилось 63 миллисикунды на обработку этого запроса. Из чего можно сделать вывод, что все остальные задержки - проблема работы сети. Мы еще можем отследить как передаются пакеты и заголовки с помощью tcpdump, только нужно отключить SSL, иначе вы ничего там не разберете:

tcpdump -n -S -s 0 -vvvvv -A '(tcp dst port 80 or tcp src port 80) and (dst host ваш_ip or src host ваш_ip)'

Вы можете подробнее почитать как пользоваться tcpdump в отдельной статье. Фактически, этот фильтр означает, что нужно отображать все пакеты, полученные на порт 80 или отправленные с порта 80, при том, что они будут отправлены либо с вашего ip либо на ваш ip. Теперь в другом терминале выполните curl запрос к http версии сайта, в tcpdump вы увидите полный список пакетов и их содержимое:

 

14:30:08.392309 IP (tos 0x0, ttl 54, id 61543, offset 0, flags [DF], proto TCP (6), length 129)
95.133.238.84.landmarks > 185.22.173.108.http: Flags [P.], cksum 0x9f58 (correct), seq 1691128117:1691128194, ack 3071477496, win 229, options [nop,nop,TS val 5005665 ecr 848099631], length 77
[email protected]..._..T...l...Pd..5.........X.....
.Laa2../GET / HTTP/1.1
Host: test.kovalets.net
User-Agent: curl/7.50.1
Accept: */*

14:30:08.392357 IP (tos 0x0, ttl 64, id 65431, offset 0, flags [DF], proto TCP (6), length 52)
185.22.173.108.http > 95.133.238.84.landmarks: Flags [.], cksum 0xb483 (incorrect -> 0x6fa7), seq 3071477496, ack 1691128194, win 227, options [nop,nop,TS val 848099696 ecr 5005665], length 0
E..4..@[email protected]_..T.P......d..............
2..p.Laa
14:30:08.402702 IP (tos 0x0, ttl 64, id 65432, offset 0, flags [DF], proto TCP (6), length 2948)
185.22.173.108.http > 95.133.238.84.landmarks: Flags [.], cksum 0xbfd3 (incorrect -> 0x2316), seq 3071477496:3071480392, ack 1691128194, win 227, options [nop,nop,TS val 848099707 ecr 5005665], length 2896
E.....@.@.{~...l_..T.P......d..............
2..{.LaaHTTP/1.1 200 OK
Server: nginx/1.13.3
Date: Fri, 18 Aug 2017 11:30:08 GMT
Content-Type: text/html; charset=UTF-8
Transfer-Encoding: chunked
Connection: keep-alive
Expires: Fri, 18 Aug 2017 21:30:08 GMT
Pragma: public
Cache-Control: max-age=36000, public
X-Powered-By: W3 Total Cache/0.9.5.4

  • 14:30:08.392309 - отправлен запрос на страницу;
  • 14:30:08.402702 - получен ответ.

Время отображается в микросекундах, фактически, время ожидания веб сервера составило 10393 микросекунд или 10 миллисекунд. Теперь понятно, что вся проблема в сети и веб сервер работает почти так же идеально, как и у гугла. А вот что делать с сетью это уже совсем отдельная тема, которая выходит за рамки данной статьи.

Выводы

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

Запуск скрипта sh в Linux

Вся сила Linux в использовании терминала. Это такая командная оболочка, где вы можете выполнять различные команды, которые будут быстро и эффективно выполнять различные действия. Ну впрочем, вы наверное это уже знаете. Для Linux было создано множество скриптов, которые выполняются в различных командных оболочках. Это очень удобно, вы просто объединяете несколько команд, которые выполняют определенное действие, а затем выполняете их одной командой или даже с помощью ярлыка.

Но у новичков может возникнуть вопрос - как запустить скрипт в Linux, что для этого нужно сделать, что будет происходить и какие команды нужно выполнить. Но сначала нужно рассмотреть как работают скрипты и что такое исполняемость.

Как работают скрипты

В Linux почти не используется расширение файла для определения его типа на системном уровне. Это могут делать файловые менеджеры и то не всегда. Вместо этого, используются сигнатуры начала файла и специальные флаги. Система считает исполняемыми только те файлы, которым присвоен атрибут исполняемости.

Теперь о том, как работают скрипты. Это обычные файлы, которые содержат текст. Но если для них установлен атрибут исполняемости, то для их открытия используется специальная программа - интерпретатор, например, оболочка bash. А уже интерпретатор читает последовательно строку за строкой и выполняет все команды, которые содержатся в файле. У нас есть несколько способов выполнить запуск скрипта linux. Мы можем запустить его как любую другую программу через терминал или же запустить оболочку и сообщить ей какой файл нужно выполнять. В этом случае не нужно даже флага исполняемости.

Запуск скрипта sh в Linux

Сначала рассмотрим пример небольшого sh скрипта:

#!/bin/bash
echo "Hello world"

Вторая строка - это действие, которое выполняет скрипт, но нас больше всего интересует первая - это оболочка, с помощью которого его нужно выполнить. Это может быть не только /bin/bash, но и /bin/sh, и даже /usr/bin/python или /usr/bin/php. Также часто встречается ситуация, что путь к исполняемому файлу оболочки получают с помощью утилиты env: /usr/bin/env php и так далее. Чтобы выполнить скрипт в указанной оболочке, нужно установить для него флаг исполняемости:

chmod ugo+x script.sh

Мы разрешаем выполнять запуск sh linux всем категориям пользователей - владельцу, группе файла и остальным. Следующий важный момент - это то место где находится скрипт, если вы просто наберете script.sh, то поиск будет выполнен только глобально, в каталогах, которые записаны в переменную PATH и даже если вы находитесь сейчас в той папке где находится скрипт, то он не будет найден. К нему нужно указывать полный путь, например, для той же текущей папки. Запуск скрипта sh в linux:

./script.sh

Или полный путь от корня:

/home/user/script.sh

Если вы не хотите писать полный путь к скрипту, это можно сделать, достаточно переместить скрипт в одну из папок, которые указаны в переменной PATH. Одна из них, которая предназначена для ручной установки программ - /usr/local/bin.

cp script.sh /usr/local/bin/script.sh

Теперь вы можете выполнить:

script.sh

Это был первый способ вызвать скрипт, но есть еще один - мы можем запустить оболочку и сразу же передать ей скрипт, который нужно выполнить. Вы могли редко видеть такой способ с bash, но он довольно часто используется для скриптов php или python. Запустим так наш скрипт:

bash script.sh

А если нам нужно запустить скрипт на php, то выполните:

php script.php

Вот так все просто здесь работает. Так можно запустить скрипт как фоновый процесс, используйте символ &:

script.sh &

Даже запустить процесс linux не так сложно.

Выводы

Как видите, запуск скрипта sh в linux - это довольно простая задача, даже если вы еще плохо знакомы с терминалом. Существует действительно много скриптов и некоторые из них вам возможно придется выполнять. Если у вас остались вопросы, спрашивайте в комментариях!

Вывод экрана Android на компьютер

Хотя это не ежедневная задача, время от времени, может понадобиться вывести экран Android на экран своего компьютера. Это может понадобиться для просмотра фото или видео с смартфона на экране компьютера, разработки без использования устройства, или просто в качестве зеркала. Неважно какая у вас причина, это очень легко сделать.

Возможен вывод экрана Android на компьютер через сеть Wifi или с помощью USB подключения. Оба способа очень просты и потребуют минимум действий и настроек. Причем оба метода кроссплатформены, вы можете использовать их одинаково успешно в Windows, Linux или даже Mac, вам только нужен браузер Google Chrome на компьютере и все. Дальше мы рассмотрим как все правильно настроить.

Читать далее Вывод экрана Android на компьютер

Установка PHP 7 в CentOS

Не так давно появилась новая версия одного из самых популярных скриптовых языков программирования на просторах веб - PHP 7. Очень долго разработчики развивали пятую версию и было выпущено несколько минорных релизов, но, в конце концов, было решено пропустить шестой номер версии, и сразу выпустить PHP 7.0. Эта версия приносит множество полезных нововведений, о которых мы поговорим ниже.

Учитывая что CentOS - это очень стабильный дистрибутив, то его пользователи получат только в следующей версии. В этой статье мы рассмотрим как выполняется установка PHP 7 CentOS 7.

Что нового в PHP 7

Новая версия PHP получила множество нововведений, но что самое главное для новых пользователей - очень сильную оптимизацию. Разработчики переработали кодовую базу и добавили новые алгоритмы, что дало прирост производительности в два раза, также уменьшено потребление памяти вполовину. Кроме того, были добавлены некоторые новые возможности:

  • Импорт пространств имен группами;
  • Добавлена возможность присвоить значение по умолчанию если переменная пустая;
  • В классах можно указывать ожидаемые типы данных для методов;
  • Добавлены анонимные классы;
  • Добавлена возможность создавать Escape последовательности для unicode;
  • Улучшены генераторы;

Но что более важно для нас, это те функции и возможности, которые были удалены. Это необходимо знать перед переходом на новую версию чтобы избежать возможных проблем с совместимостью ваших проектов. Из языка полностью удалены такие расширения:

  • interbase;
  • mssql;
  • oci8;
  • pdo_dblib;
  • pdo_oci;
  • sybase_ct;

Расширение ereg считается устаревшим, а imap и mcrypt пока поддерживаются, но, видимо, ненадолго. Также были убраны устаревшие теги: <%, <%=, <script language="php"> больше они не работают. Классы и интерфейсы больше нельзя именовать именами типов данных. Также изменен синтаксис работы с возвращаемыми методами данными. В основном это все, если ваш проект не содержит всех этих проблем, то вы можете спокойно переходить на PHP 7. Такие популярные CMS, как WordPress, Zend, Yii, Symfony и множество других уже давно поддерживают PHP 7. А теперь рассмотрим как установить PHP 7 CentOS 7.

Установка PHP CentOS 7

Мы будем использовать репозиторий Remi для установки PHP. Но перед тем как мы сможем его подключить, нам понадобиться дополнительно репозиторий EPEL:

sudo rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

 

Дальше устанавливаем сам репозиторий Remi:

sudo rpm -Uvh http://rpms.remirepo.net/enterprise/remi-release-7.rpm

После установки смотрим доступные репозитории Remi:

ls /etc/yum.repos.d/remi*

Как видите, есть несколько версий php, сейчас мы можем активировать php 7.1, для этого откройте соответствующий файл, найдите секцию [remi-php71], в ней найдите enabled и поменяйте значение с 0 на 1:

vi /etc/yum.repos.d/remi-php71.repo

enabled=1

Теперь самое интересное - установка php 7.1 centos 7. Если у вас уже установлена старая версия php, то вам не нужно ничего удалять, вы можете просто обновить систему и получите то, что нужно:

sudo yum update

Если же никакая версия php не установлена, просто установите нужные пакеты:

sudo yum install php php-fpm php-gd php-mysql

После завершения работы команды вы получите готовую и работающую версию php, и вы можете использовать ее для своего веб-сервера Apache или Nginx. Если вы используете Apache, то даже ничего перенастраивать не придется. Если вы используете подключение по сетевому сокету в Nginx, то вам нужно будет только перезапустить php-fpm:

sudo systemctl restart php-fpm

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

https://youtu.be/GOgbR6MJESM

Выводы

В этой небольшой статье мы рассмотрели как выполняется установка PHP 7 CentOS 7. Как видите, это совсем несложно и вы можете установить все это на свой сервер чтобы получить максимальную производительность. Если у вас остались вопросы, спрашивайте в комментариях!

Пароль root в Ubuntu

Как вы знаете, разработчики Ubuntu имеют свой взгляд на безопасность работы с дистрибутивом. Довольно много дистрибутивов, в том числе Debian, на котором основана Ubuntu, предлагают использовать аккаунт суперпользователя для выполнения различных задач по администрированию системы. Но сейчас такой подход считается небезопасным, поскольку вы можете забыть что работаете от имени суперпользователя и удалить какие-либо важные вещи.

Поэтому было решено использовать для административных действий, которые требуют прав суперпользователя команду sudo. Но разработчики Ubuntu пошли еще дальше и вообще отключили аккаунт суперпользователя. Если вы попробуете войти в него, то у вас ничего не выйдет. В этой статье мы разберем как установить пароль суперпользователя Ubuntu и разблокировать его.
Читать далее Пароль root в Ubuntu