Kezdőlap › Fórumok › Programozás › Bash script
- This topic has 437 hozzászólás, 56 résztvevő, and was last updated 13 years, 7 months telt el by
Goosfrabaa.
-
SzerzőBejegyzés
-
2008-05-12-19:06 #2053549
Hogyan lehet egy bash scriptbe olyan védelmet építeni ami megakadályozza, hogy a progi több mint egy példányban fusson és mindig működik is?
Ugyanis van egy script, ami végtelen ciklusban fut, de még mielőtt elindulna ez a ciklus beszúrtam a következő vizsgálatot:
Code:if [ `ps aux|grep /.awesome/mocp-status|grep -v grep|wc -l|tee ~/.awesome/check` -ge 3 ];
then
exit 1
fiA feltétel vizsgálatakor jó esetben 2 sort lát, – bár ezt sem tudom miért, mivel akkor indul el először a program és a grep sora ki van szedve – de van amikor 4-et, így elsőre sem indul el.
Azon gondolkoztam még, hogy egy fáljba írna valami adatot amikor elindul, mondjuk a pid-jét és azt vizsgálná az elején, ezzel csak az a gond, hogy általában „kill”-el van lelőve a script, így a létrejött fájlt nem tudja törölni leálláskor, max azt lehetne, hogy a fájlban szereplő pid-nek küld először egy kill-t, majd újraírja a saját, aktuális pid-jével, viszont ez pillanatnyi fennakadást okozna a progi működésében, ami nem biztos, hogy jó lenne.
Talán azt kellene csak megvizsgálni, hogy az adott pid még él-e, bár lehet azóta már más progi használja, akkor meg megint bukta van.Van esetleg valami, egyszerű és tutira működő megoldás a problémára?
2008-05-12-19:18 #2053550Próbáld így : ps -C programod_neve
2008-05-12-20:13 #2053551pidof -x $
2008-05-13-07:40 #2053552birno wrote:Van esetleg valami, egyszerű és tutira működő megoldás a problémára?
A trap parancs lesz a te barátod:
http://www.linuxvilag.hu/content/files/cikk/36/cikk_36_54_55.pdf2008-05-14-11:46 #2053553uzsolt wrote:birno wrote:Van esetleg valami, egyszerű és tutira működő megoldás a problémára?
A trap parancs lesz a te barátod:
http://www.linuxvilag.hu/content/files/cikk/36/cikk_36_54_55.pdfValóban ő lett az én új barátom, köszi!
2008-08-03-17:15 #2053554Hello.
Akkor folytassuk tovább még csak 26 oldal. 😉Wodim-mal írnék audio cédét egy scriptből. A probléma az, hogy baj van a space-t tartalmazó fájlnevekkel.
erre hibát ad a wodim :
wodim -audio /home/music/ez a zene.wavHa parancssorból tabbal egészítem ki a nevet akkor jó :
wodim -audio /home/music/ez a zene.wavHa parancssorból ” ” jelek közé teszem akkor is jó :
wodim -audio „/home/music/ez a zene.wav”Ha a scriptben teszem ” ” jelek közé akkor hibát jelez :
wodim -audio „/home/music/ez a zene.wav”
De miért, ha parancssorból elfogadja.A scriptben nem tudtam lecserélni a space-t ” ” ilyenre ” ” mint a tabos kiegészítés. Tehát ezt nem tudom kipróbálni.
Hogyan tudnám a scriptből úgy összeállítani a parancssort, hogy azt el is fogadja.
Mi a különbség a parancssori wodim -audio „/home/music/ez a zene.wav” és a scripten belüli wodim -audio „/home/music/ez a zene.wav” között.2008-08-03-17:52 #2053555Erre nem kell szkript, egy alias is elég:
Code:alias audio-cd=”wodim -audio”Scriptben miért nem tudod lecserélni a space-t? A „különbséget” se értem:
Code:$ ls
$ mkdir „a b”
$ ls
a b
$ rmdir „a b”
$ ls
$ echo mkdir „a b” > szkript
$ chmod +x szkript
$ cat szkript
mkdir „a b”
$ ls
szkript
$ ./szkript
$ ls
a b szkript
$ rmdir a b
rmdir: „a” eltávolítása meghiúsult: Nincs ilyen fájl vagy könyvtár
rmdir: „b” eltávolítása meghiúsult: Nincs ilyen fájl vagy könyvtár
$ rmdir „a b”
$ ls
szkriptTehát nekem semmi különbség nincs… Legalábbis ami a mkdir-t illeti 😉
2008-08-03-18:14 #2053556uzsolt wrote:Erre nem kell szkript, egy alias is elég:Code:alias audio-cd=”wodim -audio”Scriptben miért nem tudod lecserélni a space-t? A „különbséget” se értem:
Azt a mkdires dolgot és az aliast azt hagyjuk. 😀
Akkor részletesebben itt a kód
AUDIO_TRACKS=
for track in ${VOBDIR}/*.wav ; do
AUDIO_TRACKS=”${AUDIO_TRACKS} -audio „${tracks}””
doneCOMMAND=”${CD_WRITER_PRG} dev=${WRITER_DEVICE} gracetime=10 fs=1024k -v -useinfo speed=${WRITING_SPEED} -dao -dummy -pad -overburn ${AUDIO_TRACKS}”
$COMMAND
Namost ennek durván így néz ki a kimete:
/usr/bin/wodim dev=/dev/dvdrw gracetime=10 fs=1024k -v -useinfo speed=4 -dao -dummy -pad -overburn -audio „/home/music/ez a track1.wav” -audio „/home/music/ez a track2.wav” stb,
ahány track van a ${VOBDIR} mappában.Erre hibát ad a wodim, hogy nincs meg a ‘home/music/ez’ nevű fájl
De ha parancssorból teszem ugyanezt ” ” jelek közé, vagy tabbal egészítem ki a fájl vevet akkor ott jó.2008-08-03-22:15 #2053557Hát nem csak a nőknél vannak nehéz napok. 😀
Nem is kell a wodimnak egyenként felsorolni az összes audio trackot. Elég így is -audio /home/music/*.wav.
Így frankón működik. Tehát space probléma megoldva. 😉2008-08-04-08:03 #2053558Ezt már írtam:
uzsolt wrote:Erre nem kell szkript, egy alias is elég:Code:alias audio-cd=”wodim -audio”Ezután audio-cd *.wav kiírja neked az audio cédét.
milfer wrote:$COMMANDJobb az, ha eval $COMMAND módon hívod meg.
-
SzerzőBejegyzés
- Be kell jelentkezni a hozzászóláshoz.
legutóbbi hsz