LINUX.ORG.RU

autorun скрипта после загрузки баша


0

1

Хочу такое поведение:

1) Человек логинится в баш под специальным пользователем
2) Баш полностью инициализируется
3) Появляется башевая командная строка
4) Запускается autorun.sh

Как это сделать кошерно? Добавить в конец bash_profile конкретного пользователя что-то типа «autorun.sh&» — это норм?

Или добавить в конец /etc/profile что-то типа «если пользователь == „васяпупкин“, то autoran.sh&»?

Или может есть какой-то хук на «баш полностью загрузился»?

Т.е. я хочу именно чтобы все стандартные profiles загрузились (мало ли что туда понапишут), и мой скрипт выполнился в самом-самом конце.

★★★★☆

/home/vasyapupkin/bashrc не подойдёт? Или тебе надо чтобы пользователь ничего поделать со скриптом не мог?

RedPossum ★★★★★
()
Ответ на: комментарий от RedPossum

1) можно сказать и так, наверное.

хочу, чтобы он гарантированно запустился после инициализации всего на свете.

а то пользователь понапишет чего-нибудь ниже скрипта в bashrc, и потом будет плакать, что типа, а чо у меня мои настройки в авторане не подхватываются

idiot-proof setup

2) ну и кроме того, autorun запускает утилиту, которая монопольно захватывает терминал, запускает иксы, и много чего еще. Как бы какого конфликта не случилось..

stevejobs ★★★★☆
() автор топика
Ответ на: комментарий от stevejobs

Нафига тогда через bash? в fstab скрипт: читает ~/.profile на случай экспортов -> утилита -> exec bash.

anonymous
()
Ответ на: комментарий от RedPossum

+1. А кроме этого, стремление к надежности тут экспоненциально увеличивает сложность, имхо:

When bash is invoked as an interactive login shell, or as a non-interactive shell with the --login option, it first reads and executes commands from the file /etc/profile, if that file exists.  After reading that file, it looks for ~/.bash_profile,  ~/.bash_login,  and  ~/.profile, in that order, and reads and executes commands from the first one that exists and is readable.  The --noprofile option may be used when the shell is started to inhibit this behavior.

When  an interactive shell that is not a login shell is started, bash reads and executes commands from ~/.bashrc, if that file exists.
This may be inhibited by using the --norc option.  The --rcfile file option will force bash to read and  execute  commands  from  file instead of ~/.bashrc.

Отдельно забавный вариант будет, если у юзера в том файле, куда захочется добавиться, будет какой-нибудь «exit 0» в конце :)

qux
()
Ответ на: комментарий от qux

О птичках говоря, для себя использую вариант с мониторингом загрузки системы. То есть ставим куда угодно ожидание условия: CPU idle >=85% в течении 5 секунд. По выполнению запускаем свою задачу.

Отчасти костыль, но имхо не худший. Оверхед на получение загрузки CPU уменьшить бы, а то пока это постоянно работающий vmstat и периодический grep | tail.

qux
()
Ответ на: комментарий от anonymous

приведи пример, пожалуйста?

это livecd. нужно запустить post-start скрипт, в котором пользователь сможет проставить всякие галочки

доступен systemd, если это чем-то поможет

stevejobs ★★★★☆
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.