Коротыши

2 мин

Здесь буду собирать короткие HOWTO, которые никогда не получается вспомнить, когда надо.

Мышь в консоли linux

aptitude install gpm

Не распространяются приложения через GPO

Проверить поддержку русского для non-unicode приложений.

Автоматический выбор самого быстрого репозитория Ubuntu

/etc/apt/source.list

deb mirror://mirrors.ubuntu.com/mirrors.txt quantal main restricted universe multiverse
deb mirror://mirrors.ubuntu.com/mirrors.txt quantal-updates main restricted universe multiverse

Пересканировать устройство

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

echo 1 > /sys/block/sda/device/rescan

SSH + AgentForwarding + sudo

Чтобы ключи продолжали пробрасываться через SSH, даже когда меняем пользователя, надо добавить в /etc/sudoers (через visudo, естественно), строку:

Defaults    env_keep+=SSH_AUTH_SOCK

Прокрутка GNU screen

Чтобы работала прокрутка с помощью колесика мыши в GNU screen, нужно добавить в ~/.screenrc следующую строку (где xterm* - ваш текущий $TERM):

termcapinfo xterm* ti@:te@

Прокрутка в Tmux

Ctrl+B :

set -g mouse on

Подключиться к процессу из другого терминала

Таким образом удобно “переносить” длительные процессы, например резервное копирование, в screen/tmux, если вы забыли это сделать сразу. Из screen/нужного TTY:

reptyr PID

Если вы ловите “permission denied”, попробуйте

echo 0 > /proc/sys/kernel/yama/ptrace_scope

Модуль Apache для проброса IP через Nginx

mod_rpaf

Показать файл без комментариев и пустых строк

cat /path/to/file | egrep -v "(^\s*#.*|^$)"

Восстановление прав в /home

Когда твой коллега снес права в /home может помочь такая вот нехитрая конструкция

cd /home/ && for f in !(|.); do   chown $f:$f -R $f; done

Монтирование SSHFS

sshfs -p %порт% -o allow_other /directory user@%получатель%:/directory/

AppArmor aliases

/etc/apparmor.d/tunables/alias

alias /var/lib/mysql/ -> /new/path/mysql/,

Точка в именах пользователей Jenkins

В /etc/default/jenkins добавить в аргументы

JAVA_ARGS="-Dhudson.security.HudsonPrivateSecurityRealm.ID_REGEX=[a-zA-Z0-9_.-]+"

Вынимаем секреты из Jenkins

Через тулы разработчика получаем шифрованное значение и через запуск скриптов расшифровываем

println(hudson.util.Secret.decrypt("{XXXXXXXXXXX}"))

Вынимаем все agent labels из Jenkins

def allLabels = []

Jenkins.instance.nodes.each { node ->
  node.assignedLabels.each { label ->
    if (label as String != node.name) {
        allLabels += label
    }      
  }
}

println allLabels.unique().join('\n')

Вынимаем все агенты из Jenkins по label

def hostNames(label) {
  def nodes = []
  jenkins.model.Jenkins.get().computers.each { c ->
    if (c.node.labelString.contains(label)) {
      nodes.add(c.node.selfLabel.name)
    }
  }
  return nodes
}

Отключаем кнопки на клавиатуре

xev -event keyboard

жмем кнопку, ищем keycode, затем

xmodmap -e 'keycode <keycode>='

Примеры:

PgUp

xmodmap -e 'keycode 112='

PgDown

xmodmap -e 'keycode 117='

А если нужна тяжелая артиллерия, можно воспользоваться решением через uvdev

Цветной PS1 может ломать терминал

Нужно экранировать символы, чтобы readline мог пересчитать длину строки корректно

PS1='\[\e[38;5;202m\][\u@\h \W]\$ \[\e[m\]'

Если ▯▯▯ в тексте

Вот этот набор шрифтов скорее всего решит проблему

noto-fonts noto-fonts-cjk noto-fonts-emoji noto-fonts-extra