Можно также использовать timeout
управляйте для блокирования процесса от выполнения для дольше, чем указанное количество времени.
$ date
Mon May 6 07:35:07 EDT 2013
$ timeout 5 sleep 100
$ date
Mon May 6 07:35:14 EDT 2013
См. страницу справочника тайм-аута для получения дальнейшей информации.
] В /etc/profile add:[
] [if [ `id -ng` = "the_cool_group" ] ; then
# do stuff for people in the_cool_group
fi
] /etc/профиль
виден всем пользователям. ~/.profile
видит один пользователь, входящий в систему: это файл в домашнем каталоге пользователя, и каждый пользователь имеет свой собственный каталог; программа входа устанавливает переменную окружения HOME
в путь к домашнему каталогу пользователя. То же самое касается и других файлов, таких как /etc/bash.bashrc
и ~/.bashrc
- многие приложения имеют общесистемный конфигурационный файл под /etc
и конфигурационный файл для каждого пользователя в домашнем каталоге пользователя.
Для групп нет подобного механизма - у групп нет домашнего каталога. Таким образом, нет простого способа применить конфигурационный файл ко всем пользователям в группе.
Как показали другие ответы, вы можете добавлять команды в общесистемный файл инициализации оболочки внутри условного оператора, чтобы запускать их только в том случае, если пользователь принадлежит к определенной группе. Обратите внимание, что пользователь может принадлежать к нескольким группам. Вы сами решаете, хотите ли вы запускать команды только в том случае, если группа является основной группой пользователя или когда пользователь принадлежит к этой группе.
case "$(id -gn)" in
foo) somecommand;; # the user's primary group is foo
esac
case ":$(id -Gn | tr \\n :)" in
*:foo:*) somecommand;; # the user belongs to the group foo
esac
О разнице между .profile
и .bashrc
, смотрите Есть ли эквивалент ".bashrc" файла, который читают все оболочки?
Вы можете добавить что-то вроде этого в /etc/bash.bashrc
:
# running group-based bashrcs
for group in $(id -Gn); do
group_bashrc=/etc/bashrc-by-group/$group
if [ -f "$group_bashrc" ] && [ -r "$group_bashrc" ]; then
command . "$group_bashrc"
fi
done
Затем вы можете создать / etc / bashrc-by-group / mygroup
и поместите туда инициализации для членов группы mygroup
.
Это предполагает, что ваши группы хорошо приручены: имена групп не содержат пробелов, косых черт или подстановочных знаков, это не .
или ..
, и что у вас есть взаимно однозначное соответствие между именем группы и идентификатором группы. Если нет, вы можете использовать id -G
вместо id -Gn
и использовать / etc / bashrc-by-group / groupid
.
Вы также можете добавить к/etc/profile.d/yourscript.sh
:
echo " $(groups) "|fgrep -q ' group '
if [ $? = 0 ] ; then
test -r /path/.group_profile && source /path/.group_profile
fi
Это может быть проще, чем изменение самого файла profile
.