LINUX.ORG.RU

Сообщения filin

 

Вышла версия 0.5 продвинутого руководства по написанию bash-скриптов.

Новости — Документация
Группа Документация

Перевод части введения: "...Данный документ является одновременно и руководством и справочником по написанию скриптов для командного интерпретатора bash. Он не предполагает априорных знаний по написанию скриптов или программированию на языке bash, но способствует быстрому приобретению базового/продвинутого уровня навыков написания bash-скриптов. Упражнения и обильно коментированные примеры приглашают читателя к активному участию в процессе обучения...".

В новой версии произведена реорганизация текста на части и главы, исправлены ошибки, добавлены примеры. Объём текста эквивалентен 360-страничной печатной книге.

>>> Подробности

filin
()

user nice

Форум — Admin

В силу своей должности админу приходится ограничивать пользователей.
Отдельных юзверей приходится "мочить" ;).
Иногда возникает необходимость селективно "замочить" каких-то
пользователей так, чтобы уже при входе в систему они получали
пониженный приоритет. Стандартных средств для этого я не нашел,
(буду рад если они есть и кто-то мне их покажет)
поэтому написал два небольших скрипта выполняющих эту задачу.
Два, к сожалению, потому, что скрипты для bash-like и csh-like
шелов совмещаются плохо. Вот первый (для bash-like шелов):

======================================================================
# script to change default user nice for its logging in the system,
# run it in /etc/profile   for bash
#           /etc/zprofile  for zsh
# as:
# source <the script name>

# a logging in user
user_name=`id -un`

# default nice
default_nice=2

# some users may got special nice value,
# the nice is set in the 'case' statement below
new_nice=0

case $user_name in
    root) ;;
    good_user) ;;

    bad_user) new_nice=20 ;;

    *) new_nice=$default_nice ;;
esac

renice $new_nice $$ >/dev/null 2>&1

unset user_name
unset new_nice
unset default_nice
======================================================================

а вот второй (для csh-like шелов):

======================================================================
# script to change default user nice for its logging in the system,
# run it in /etc/csh.login   for tcsh
# as:
# source <the script name>

# a logging in user
set user_name=`id -un`

# default nice
set default_nice=2

# some users may got special nice value,
# the nice is set in the 'switch' statement below
set new_nice=0

switch ($user_name)
    case root:
    case good_user:
	breaksw

    case bad_user:
	set new_nice=20
	breaksw

    default:
	set new_nice=$default_nice
	breaksw
endsw

renice $new_nice $$ >&/dev/null

unset user_name
unset new_nice
unset default_nice
======================================================================

А можно написать одну утилиту выполняющую теже функции на С, добавить
в нее кучу сервиса (например, зависимость приоритетов от времени и даты,
конфигурационный файл).
filin
()

forint

Новости — Open Source
Группа Open Source

Первый выход на публику ещё одной самоделки. Если вам нужен быстрый интерпретатор формул (виртуальные машины и парсер написаны автором с нуля), то это для вас -- оформление в виде библиотеки и несколько работающих примеров позволят обойтись без напильника :). Язык интепретатора -- подмножество С с небольшими расширениями. В качестве одного из примеров даётся полноценный, легко расширяемый, численный калькулятор. Взять можно на ftp://Linux.ihep.su /pub/Linux/local/forint-0.5.3.tar.gz Странички пока нет.

filin
()

signal(продолжение)

Форум — Development

пардон за продолжение в новом месте, старое уже покрылось пылью веков :). Спасибо за советы. В жизни я представляю себе всё так: я запоминаю чужой handler, ставлю свой, ловлю в handler'е wait'ом помершие потомки и если помер не мой, то вызываю чужой обработчик (либо не вызываю, что может привести к какой-нибудь заднице на стороне, родившей своего потомка), который, если в нём стоит waitpid, производит необходимые действия для своего помершего потомка и, в идеале, возвращает управление мне, если же не дай бог в нём стоит wait, то происходит блокирование до умервщления следующего потомка, которого может не быть, или (может быть) прерывания wait'а сигналом, если же такая задница происходит между двумя библиотеками и программер тут не при чём, то последнему остаётся писать гневное письмо в адрес авторов библиотек (и его счастье если он эту задницу вовремя обнаружит). В идеале же, я бы хотел, чтобы ось позволяла заловить мне моего потомка не видимо от других (потомков, обработчиков, программеров), чего UNIX не позволяет, как любая другая ось (?). Any advices? (нет, свою ось я писать не буду, кишка тонка пока :)

filin
()

RSS подписка на новые темы