[Megoldódott]Automatikusan induló script nem indul

Fórumok

Xubuntu 15.04 alatt szerettem volna automatikusan induló scriptemet futtatni. A munkamenet és indítás nevű ablaknál hozzáadtam a saját autostart.sh nevű fájlomat. (Egy egyszerű panning egyébként) De nem indul automatikusan. A fájl tatalma:


#!/bin/bash
synclient tapbutton1=1
xrandr --output LVDS1 --panning 1024x768

illetve:
lsattr -R autostart.sh 
-------------e-- autostart.sh
file autostart.sh 
autostart.sh: Bourne-Again shell script, ASCII text executable

Nem tudom mi lehet a gond, eddig működött.

Hozzászólások

A szkripten van execute és read jogosultságod? ls -l autostart.sh

Ha nincs, még akkor is lehet így futtatni /bin/bash autostart.sh. A szkript neve elé érdemes odatenni a teljes útvonalat, mert nem tudhatod, melyik könyvtárból indul.

Van.


ls -l autostart.sh
-rwx--x--x 1 foo bar 75 febr  19  2014 autostart.sh

Azért megpróbálom a teljes útvonalat. Hátha...
Edit: nem lehet megadni, mert a script teljes elérési útvonalát kell megadni. Az pedig /home/usernevem/autostart.sh
Szóval nem tudom mit lehetne tenni.

Azt honnan tudod, hogy nem fut le? Azért kérdeztem, mert több alkalommal belefutottam abba, hogy a script ugyan futott, csak valamilyen környezeti változó, jogosultság nem volt rendben. Úgy teszteld, hogy az autostart scriptedből logolj ideiglenesen file-ba, majd nézd meg, mit írt, illetve létrejött-e. Például:

{
    date '+%F %T'
    echo -e "DISPLAY=$DISPLAY\nEUID=$EUID\nPATH=$PATH\nUSER=$USER\nHOME=$HOME\n"
} >>/home/felhasználó/autostart.debug

A felhasználót írd ki, ne a $HOME-ra vagy $USER-re hivatkozz, mert ha definiálatlanok, a debug sem fog működni.

Aztán ki a tulajdonos? Script esetében nem kell olvasási jog is? Nem tudom, csak kérdezem. Arra gondolok, hogy a scriptet a shellnek olvasnia kell.

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Az autostart.debug tartalma:


2016-05-26 13:07:06
DISPLAY=:0.0
EUID=1000
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
USER=zslaszlo
HOME=/home/zslaszlo

2016-05-26 13:07:30
DISPLAY=:0.0
EUID=1000
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
USER=zslaszlo
HOME=/home/zslaszlo

Ez rendben van?

Annyiban rendben van, hogy ezek szerint az autostart scripted lefutott, már feltéve, hogy abba írtad a debugot, hiszen létrejött a file, benne az időponttal, amikor lefutott, s a megfelelő változók tartalmával, amelyek reálisak, nem üresek.

Mivel ez így van, a scripten belül keresd a hibát, például az stderr-t irányítsd file-ba, hogy lásd, melyik parancs nyafog valamiért. Lehet akár egy egyszerű elírás a scriptben, rossz paraméter, vagy bármi.

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Én is Xfce-t használok, igaz, Fedorán. Mondom, én mit csináltam.

A scriptemet a $HOME/.Autostart helyre tettem start névvel. Ez nálam egy symlink a /usr/local/share/Xfce/start_script file-ra, melynek root:root a tulajdonosa, 0755 a jogai. Ugyanakkor tapasztalatból mondom, hogy felhasználó:users 0755-tel is működik, csak én szeretem ugyanazt a scriptet használni az összes felhasználónál.

Aztán van olyan a menüben, hogy Settings, Settings manager, majd abban Session and Startup. Application autostart fülön felvettem egy új elemet. A name az autostart script, a description-t kihagytam, a command pedig /home/felhasználó/.Autostart/start, tehát nem írtam elé a bash interpretert, s nem paraméter a file, hanem ő maga a futtatható. Ezt tehetem, mert van rá futtatási jog, valamint az első sor egy #!/bin/bash. Pont nélkül, az csak a mondat vége. Miután felvettem a listába, fontos megnézni, hogy a checkboxban legyen pipa. Xfce-nél találtam olyan ellentmondást már, hogy a GUI és a valós állapot eltér, így ha van is pipa, előbb szedd ki, majd tedd vissza újra. Aztán Close.

Nekem gond nélkül működik, egy rakás dolgot meg szoktam oldani saját scriptből. A verzió:

xfce4-session-4.12.1-8.fc24.x86_64

Szerk.: Ja, és még valami. Nézd a promptot a terminálban! Volt már velem olyan, hogy egyik terminálban kinyírtam process-t, ellenőriztem másikban, még fut. Aztán kinyírtam SIGKILL-el, másik terminálon ellenőrzöm, még mindig fut. Kitépem az összes hajam, mire rájöttem, hogy az egyik terminál a saját gépem, a másik egy távoli gép volt, így ha az egyiken megölök egy process-t, az a másikon ellenőrizve nem lesz meghalva. :) Be voltam jelentkezve ssh-n egy másik gépre, s azt a terminált kezdtem használni, mintha a sajátom lenne. :)

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Nagyon köszönöm a részletes leírást és a sok-sok segítséget. Mindent úgy csináltam, ahogyan leírtad. Sajnos az xrandr nem fut le. DE, betettem kíváncsíságból egy xfce4-terminal parancsot a scriptbe és láss csodát induláskor nyitotta is a terminált. Tehát a hiba valahol az xrandr tájékán lehet. Kipróbáltam, hogy beírtam simán a parancssorba az xrandr sort és entert ütöttem, úgy hibátlanul lefutott. Miért nem megy, ha scriptbe írom ugyanezt?

Már ne is haragudj, de nem vagy túl segítőkész. Nem derül ki ugyanis, hogy az autostart.debug fájlba azért került a két bejegyzés, mert a rendszer futtatta le a szkriptet, vagy azért, mert te futtattad, vagy esetleg mindkettő. Tedd meg kérlek, hogy letörlöd a fájlt, majd kijelentkezel-bejelentkezel, vagy újraindítod a gépet.

Ha a szkript lefut, akkor a bejelentkezést követően egyetlen bejegyzés kell benne legyen.
Ha nem fut le, akkor a fájl nem fog létezni.

Nem ismerem annyira az Xfce-t (gondolom, ez lenne az ablakkezelő), de esetleg egy DISPLAY=:0 nem árthat a synclient... és az xrandr... elé. Legalábbis cron-ból a grafikus programokat így érdemes indítani.

Ubuntu 15.10-re frissítve a probléma megoldódott. Tehát nem a script volt a hibás, hanem az ubuntu xfce4-session kezelője.
Most:
$ xfce4-session --version
xfce4-session 4.12.1 (Xfce 4.12)

Így működik. Az eredeti scriptet nem változtattam...
Ha lenne kedvem és időm reportolnám a hibát, de egyik sincs.