Shell: получаем имя пользователя, запустившего скрипт
Определить имя пользователя, запустившего shell скрипт можно в несколько этапов:
Получить строку из /etc/passwd по UID пользователя (из переменной окружения $UID):
Отфильтровать только имя:
Такой прием нужен чтобы из скрипта завершить процессы принадлежащие пользователю, запустившему скрипт:
Получить строку из /etc/passwd по UID пользователя (из переменной окружения $UID):
getent passwd $UID
sergei: x :1000:1001:sergei:/home/sergei:/bin/bash
Отфильтровать только имя:
getent passwd $UID | sed -e 's/\:.*//'
sergei
Такой прием нужен чтобы из скрипта завершить процессы принадлежащие пользователю, запустившему скрипт:
#!/bin/bash
killall -u $(getent passwd $UID | sed -e 's/\:.*//') trayer
trayer --edge top --widthtype request --align right &
- +4
- 17 февраля 2011, 17:02
- 1
1C 7.7 + Etersoft Wine + PostgreSQL
Довольно часто требуется обеспечить интеграцию программы 1С с другими базами данных. Под Windows это легко запрограммировать с помощью ADO. А как быть, если 1C работает в среде Linux под Wine? ADO с Wine не очень-то стыкуется, к тому же теряется лицензионная чистота. Остается использовать UNIX-way. Например, задействовать демон incron, реагирующий на изменения файлов.
( Читать дальше )
( Читать дальше )
- +8
- 01 ноября 2010, 19:48
- 2
Перезапуск остановившихся служб
Бывает такое, что некоторые службы иногда вылетают. На одном из моих серверов это Winbind. Понять почему он останавливается я не могу, в логах тишина. Поэтому, я написал простенький скриптик и запускаю его каждые 5 минут по крону:
#!/bin/sh
processname='winbindd'
command='/etc/init.d/winbind restart'
start() {
PID=`ps -aef | grep $processname | grep -v grep | awk '{print($2)}'`
echo $PID
echo -n $"Starting $processname: "
if [ ! -z "$PID" ]; then
echo -n $"cannot start $processname: $processname is already running."
echo
return 1
else
$command
return 0
fi
}
start
- +3
- 03 марта 2010, 12:00
- 3
Пишем CD/DVD под Linux без прав суперпользователя
Из цикла «для себя, чтобы не забыть», но и другим пригодиться может. О том, как записать CD/DVD диск под Linux материалов в Инете полно. Не буду даже ссылки приводить, Google в помощь. Буквально пара слов об одной хитрости, с которой столкнулся сегодня.
Возникла необходимость записать диск из образа. Делается это обычно командой
Только вот беда: образы дисков у меня хранятся в локальной сети в каталоге, замонтированном по sshfs. Это значит, что для пользователя root, в которого мы превращаемся благодаря sudo, его содержимое недоступно. А без sudo команда cdrecord не работает, т.е. усторйства пишущего crdom принадлежат root. А почему бы не подчинить их обычному пользователю? Да никто не мешает!
Всё, теперь диски можно прожигать без sudo. Можно прописать эти команды в автозагрузку.
Кстати, похожий рецепт помогает если, под обычным пользователем не работает звук или видео-устройства:
Возникла необходимость записать диск из образа. Делается это обычно командой
sudo cdrecord dev=3,0,0 blank=fast -eject bla-bla-bla.iso
Только вот беда: образы дисков у меня хранятся в локальной сети в каталоге, замонтированном по sshfs. Это значит, что для пользователя root, в которого мы превращаемся благодаря sudo, его содержимое недоступно. А без sudo команда cdrecord не работает, т.е. усторйства пишущего crdom принадлежат root. А почему бы не подчинить их обычному пользователю? Да никто не мешает!
sudo chown yababay /dev/sr0 # Устройстово DVD-recorder
sudo chown yababay /dev/sg* # Generic SCSI-устройства
Всё, теперь диски можно прожигать без sudo. Можно прописать эти команды в автозагрузку.
Кстати, похожий рецепт помогает если, под обычным пользователем не работает звук или видео-устройства:
sudo chown yababay /dev/audio/*
sudo chown yababay /dev/video*
- +4
- 11 января 2010, 00:28
- 3