Как запустить rc.local от имени обычного пользователя?


8

У меня есть некоторые пожелания, чтобы я хотел, чтобы меня вызывали сразу после входа в систему, включая 'startx', и я подумал, rc.localчто это хорошее место для них, но проблема в том, что rc.localон запускается от имени пользователя root, и я не хочу этого, очевидно, я могу сделать что-то вроде этого:

su username -c somecommend-here

Но я ищу способ запустить весь rc.local как обычный пользователь, или, может быть, есть лучшее место для размещения моего кода?

PS. Я использую Ubuntu-мини-ремикс 1104i386

Спасибо


AFAIK rc.local выполняется параллельно с логином в конце последовательности загрузки. Я имею в виду, это будет выполнено, даже если вы не войдете в систему, но вы можете войти в систему, и это может быть ожидание выполнения.
Хавьер Ривера

@JavierRivera Так, каково было бы решение?
omeid

Ответы:


6

Самый простой способ запустить команду при входе пользователя в систему - создать .desktopфайл для команды и вставить его в ~/.config/autostartпапку. Как выглядит файл рабочего стола? Вот пример, который получает домашнюю страницу Ask Ubuntu при wgetкаждом входе пользователя в систему:

[Desktop Entry] 
Name=Launch wget
Comment=Fetches the Ask Ubuntu home page.
Exec=wget http://askubuntu.com/

Не кажется хорошей идеей для запуска startx(как ОП спросил) после графического входа в систему.
энзотиб

@enzotib: Там нет упоминания о графическом логине.
Натан Осман

Может быть, я неправильно понял вопрос, я полагал, что пользователь будет начинать startxс rc.local. Извините
энзотиб

1

Я не знаю различий между /etc/rc.local и crontab, но обычно я создаю учетную запись службы и добавляю соответствующую работу. Например: sudo crontab -u p4padmin -e

@reboot ~/bin/p4p -d -r ~/var/p4p/cache/foo -p 2020 -t depot:2020 -L ~/var/p4p/log/foo.log

Вам не нужно входить в систему для запуска службы.


0

Путь linux состоит в добавлении ваших команд ~/.bashrcвместо /etc/rc.local.

Каждый пользователь имеет .bashrcв своем домашнем каталоге. Этот файл сценария запускается автоматически сразу после входа пользователя. Он запускается с учетными данными пользователя, поэтому suкоманда не нужна.

Мне кажется, это именно то, что вы ищете.


Это не совсем правильно, так как .bashrcне читается, когда пользователь входит в систему lightdm, например, используя обычный .

Я слишком быстро пришел к выводу, что пользователь использовал вход в систему из командной строки вместо диспетчера отображения из-за «ручной» команды startx, о которой он упомянул… мой плохой :-)
thom
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.