Запуск команд от имени системных пользователей

Когда требуется запустить команду или просто проверить права доступа от имени другого пользователя, можно воспользоваться примерно такой командой:

su -c whoami nobody

Для обычных пользователей это вернёт ожидаемый результат. Но, для системных пользователей, вроде nobody, apache и .т.д., результат будет таким:

This account is currently not available.

Читать далее Запуск команд от имени системных пользователей

Что делать с Error opening terminal: unknown?

В некоторых docker-контейнерах при запуске консольных приложений, вместо программы может отобразиться ошибка:

Error opening terminal: unknown.

Лечится это проще простого, достаточно выполнить:

export TERM=xterm

И затем повторно запустить приложение.

Как по-быстрому увеличить объём выделяемой памяти для консольного PHP скрипта?

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

PHP Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 20480 bytes)

Конечно, можно увеличить memory_limit в php.ini или дописать в скрипт:

ini_set('memory_limit','256M');

Читать далее Как по-быстрому увеличить объём выделяемой памяти для консольного PHP скрипта?

Как редактировать crontab через nano

Vim не самый юзер-френдли текстовый консольный редактор, например, nano на порядок удобнее и интуитивнее. Однако, именно vim является редактором для крона по-умолчанию в CentOS.

crontab -e

Команда выше открывает крон-файл текущего пользователя для редактирования в редакторе по-умолчанию. Однако, его можно изменить разово перед каждым открытие крона на редактирование.

EDITOR=nano crontab -e

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

export EDITOR=nano

Когда надоест и это, остаются только крайние меры: определение этой константы в конце файла /etc/bashrc.

Как использовать команду watch с пайпами

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

watch [your commands]

Но если в исходной команде присутствует конвейер (pipe), то его использование в лоб не приведёт к желаемому результату, например:

watch ps aux | wc -l

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

watch 'ps aux | wc -l'

Возможно, не самое красивое решение, но работает.

Если вы не ищите лёгких путей, то есть такой вариант:

while true; do ps aux | wc -l; sleep 2; done