Shell: получаем имя пользователя, запустившего скрипт

Определить имя пользователя, запустившего shell скрипт можно в несколько этапов:

Получить строку из /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
  • Sergei_T
  • 1

1C 7.7 + Etersoft Wine + PostgreSQL

Довольно часто требуется обеспечить интеграцию программы 1С с другими базами данных. Под Windows это легко запрограммировать с помощью ADO. А как быть, если 1C работает в среде Linux под Wine? ADO с Wine не очень-то стыкуется, к тому же теряется лицензионная чистота. Остается использовать UNIX-way. Например, задействовать демон incron, реагирующий на изменения файлов.

( Читать дальше )

Перезапуск остановившихся служб

Бывает такое, что некоторые службы иногда вылетают. На одном из моих серверов это 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
  • Mihael
  • 3

Пишем CD/DVD под Linux без прав суперпользователя

Из цикла «для себя, чтобы не забыть», но и другим пригодиться может. О том, как записать CD/DVD диск под Linux материалов в Инете полно. Не буду даже ссылки приводить, Google в помощь. Буквально пара слов об одной хитрости, с которой столкнулся сегодня.

Возникла необходимость записать диск из образа. Делается это обычно командой

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
  • yababay
  • 3