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.
- 4827 megtekintés
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.
- A hozzászóláshoz be kell jelentkezni
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.
- A hozzászóláshoz be kell jelentkezni
A Command mezőben ez van? /bin/bash /home/userneved/autostart.sh
Így ugyanis illene működnie.
- A hozzászóláshoz be kell jelentkezni
Igen. Ez van. És sajnos nem működik.
- A hozzászóláshoz be kell jelentkezni
bash -x töttyömpötty.sh mit mond rá?
- A hozzászóláshoz be kell jelentkezni
bash -x autostart.sh
+ synclient tapbutton1=1
+ xrandr --output LVDS1 --panning 1024x768
Ez jó?
- A hozzászóláshoz be kell jelentkezni
path...
- A hozzászóláshoz be kell jelentkezni
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
- A hozzászóláshoz be kell jelentkezni
+1
Bizony-bizony... Egy nail, vagy egy mail beiktatása sokat segít. Persze a loggolás még profánabb.
- A hozzászóláshoz be kell jelentkezni
Kínomban 777 jogot adtam a fájlra, de így sem fut...
Próbálkozok a logolással.
- A hozzászóláshoz be kell jelentkezni
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?
- A hozzászóláshoz be kell jelentkezni
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
- A hozzászóláshoz be kell jelentkezni
Nincs rendben,mert én futtattam a scriptet a ./autostart.sh paranccsal. A rendszer nem indította el automatikusan.
- A hozzászóláshoz be kell jelentkezni
Valami egyszerű (date >> $HOME/dlog), más tartalmú script elindul automatikusan?
________________________________________
https://sites.google.com/site/eutlantis/
- A hozzászóláshoz be kell jelentkezni
É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
- A hozzászóláshoz be kell jelentkezni
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?
- A hozzászóláshoz be kell jelentkezni
Valamilyen authentikációs probléma, vagy környezeti változó definiálatlansága szokott ilyenkor lenni. Dokumentáció olvasása, debugolás, ötletelés, próbálgatás segít.
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
Arra gondoltam, hogy ha elindul a terminál, akkor oda irányíthatnám a parancsot. Sajnos járatlan vagyok bash-programozásban, talán &> kapcsoló kell? Vagy pipe | használat? Tudna valaki segíteni, vagy nyissak egy külön témát?
- A hozzászóláshoz be kell jelentkezni
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.
- A hozzászóláshoz be kell jelentkezni
+1
- A hozzászóláshoz be kell jelentkezni
@pepo loggolás logolás
- A hozzászóláshoz be kell jelentkezni
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.
- A hozzászóláshoz be kell jelentkezni
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.
- A hozzászóláshoz be kell jelentkezni