Skriva ett skript som startar ett program som en specifik användare

Permalänk
Medlem

Skriva ett skript som startar ett program som en specifik användare

Har byggt en egen mini-server som kör Ubuntu Server 9.10.
Nu kör jag rtorrent på den, och jag har en användare "rtor" som är tänkt att köra programmet.

Problemet jag har är att jag måste logga in som rtor och kör "screen rtorrent" och sen trycka ctrl+a, ctrl+d för att detacha screen och låta det köra i bakgrunden. Alltså, detta måste ske oavsett, vilket i sig inte är ett problem, förutom då man måste starta om burken, kanske på distans dessutom.

Finns det något sätt att automatiskt köra "screen rtorrent" som användare 'rtor' när datorn startar?
Har hittat att /etc/rc.local är det sista skript som körs då datorn startats, men jag har ingen aning om hur syntaxen ska se ut för att man ska kunna starta nåt som en specifik användare.

Nån som har nåt tips?
Skulle ni skapa en egen skriptfil och anropa på rc.local eller bara köra kommandona direkt därifrån?

Permalänk
Medlem

Finns ett init script till rtorrent på deras hemsida.
Länk

Permalänk
Medlem

man 5 crontab

Leta efter "@reboot"

Permalänk
Medlem

Det är bra att låta detta ske som en separat användare! Du kan till och med låsa det kontot så att det inte går att logga in på det.

init.d är den snyggaste lösningen.

En fullösning baserad på crontab är väldigt mycket enklare att få igång och kräver ej rottillgång vid konfiguration. Själv kör jag lite halvtillfälligt med

@reboot sleep 120s && TRANSMISSION_WEB_HOME=$HOME/code/thirdparty/transmission/web/ nice -n19 $HOME/code/thirdparty/transmission/daemon/transmission-daemon -f

där jag har sleep för att slippa belasta datorn vid boot. Jag kör också i nice för att prioritera ned detta. Jag använder transmission, men du kan skriva vad du vill.

För att redigera crontab till ovanstående, skriv (sudo) crontab -u användaren -e
beroende på om du kör via sudo eller som root.

Tänk på att du måste boota om för att testa på riktigt. Pröva själv först att köra kommandot efter reboot för att vara säker på att det funkar.

Permalänk
Medlem
Skrivet av tackle:

Har hittat att /etc/rc.local är det sista skript som körs då datorn startats, men jag har ingen aning om hur syntaxen ska se ut för att man ska kunna starta nåt som en specifik användare.

Jag instämmer med tidigare svar; Kör det antingen via init.d eller /etc/inittab (som jag just kom på inte brukar finnas som standard i Ubuntu, *Doh!* x-C) fast hittills har ingen svarat på frågan om hur du startar ett skript som en specifik användare; Som root (återigen init.d eller rc.local) kör

su - rtor /bin/ditt_shell -c "kommando eller fil att exekvera"

där 'rtor' är din användare och "ditt_shell" godtycklig tolk från /etc/shells ...