Re: [rlug] Idei pornire proces în background
N-am screen. O să caut unul compilat static, dar problema e că mă aștept să fie 64K și nu o să am unde să-l flash-uiesc. Mă mai uit și la varianta unui wrapper simplu în C care să facă fork scriptului sh... 2014-06-04 8:13 GMT+03:00 Tarhon-Onu Victor lsmi...@gmail.com: On Tue, 3 Jun 2014, Adrian Popa wrote: Mi-e dificil - ar trebui s? refac squashfs-ul care e scris pe mtdblock2 - e un oarecare risc de brick... mount -o bind peste el nu am cum s? fac, c? s-ar executa prea t?rziu ?n startup ?i #2, /bin/script e o bucl? infinit?, deci routerul meu n-ar mai face routare :) Pe minunea aia ai aplicatia screen sau poate fi instalata? Daca poti face rost de screen acolo il pornesti in mod detached si sanatate, scriptul tau va avea si terminale si tot ce-i trebuie. -- I'm a genuine network and sys admin. I swear, I curse, I stick my dick into things in order to fix them. So don't ack like you're having a bad day with me around, 'cause I'll have fix to you and will not be able to fight it! ___ RLUG mailing list RLUG@lists.lug.ro http://lists.lug.ro/mailman/listinfo/rlug ___ RLUG mailing list RLUG@lists.lug.ro http://lists.lug.ro/mailman/listinfo/rlug
Re: [rlug] Idei pornire proces în background
On Wednesday 04 June 2014 09:19:18 Adrian Popa wrote: N-am screen. O să caut unul compilat static, dar problema e că mă aștept să fie 64K și nu o să am unde să-l flash-uiesc. Mă mai uit și la varianta unui wrapper simplu în C care să facă fork scriptului sh... 2014-06-04 8:13 GMT+03:00 Tarhon-Onu Victor lsmi...@gmail.com: On Tue, 3 Jun 2014, Adrian Popa wrote: Mi-e dificil - ar trebui s? refac squashfs-ul care e scris pe mtdblock2 - e un oarecare risc de brick... mount -o bind peste el nu am cum s? fac, c? s-ar executa prea t?rziu ?n startup ?i #2, /bin/script e o bucl? infinit?, deci routerul meu n-ar mai face routare :) Pai si n-ai nici inittab, nimic? Nu poti lansa intai scriptul lor si dupa aia pe al tau, sau sa il incluzi pe al lor in al tau? ___ RLUG mailing list RLUG@lists.lug.ro http://lists.lug.ro/mailman/listinfo/rlug -- Mihai Bădici http://mihai.badici.ro ___ RLUG mailing list RLUG@lists.lug.ro http://lists.lug.ro/mailman/listinfo/rlug
Re: [rlug] Idei pornire proces în background
On 06/04/2014 09:19 AM, Adrian Popa wrote: N-am screen. O să caut unul compilat static, dar problema e că mă aștept să fie 64K și nu o să am unde să-l flash-uiesc. Mă mai uit și la varianta unui wrapper simplu în C care să facă fork scriptului sh... Ai incercat o cautare pe google dupa busybox background process? Am gasit ceva interesant in primul link: http://stackoverflow.com/questions/285015/linux-prevent-a-background-process-from-being-stopped-after-closing-ssh-client #!/bin/bash IFS= run_in_coproc () { echo coproc[$1] - main read -r; echo $REPLY } # dynamic-coprocess-generator. nice. _coproc () { local i o e n=${1//[^A-Za-z0-9_]}; shift exec {i} (:) {o} (:) {e} (:) . /dev/stdin COPROC ${@} ((\$@)) $i $o 2$e $n=( $o $i $e ) COPROC } # pi-rads-of-awesome? for x in {0..5}; do _coproc COPROC$x run_in_coproc $x declare -p COPROC$x done for x in COPROC{0..5}; do . /dev/stdin RUN read -r -u \${$x[0]}; echo \$REPLY echo $x - main \${$x[1]} read -r -u \${$x[0]}; echo \$REPLY RUN done ... save as coproc.sh ... # ./coproc.sh declare -a COPROC0='([0]=21 [1]=16 [2]=23)' declare -a COPROC1='([0]=24 [1]=19 [2]=26)' declare -a COPROC2='([0]=27 [1]=22 [2]=29)' declare -a COPROC3='([0]=30 [1]=25 [2]=32)' declare -a COPROC4='([0]=33 [1]=28 [2]=35)' declare -a COPROC5='([0]=36 [1]=31 [2]=38)' coproc[0] - main COPROC0 - main coproc[1] - main COPROC1 - main coproc[2] - main COPROC2 - main coproc[3] - main COPROC3 - main coproc[4] - main COPROC4 - main coproc[5] - main COPROC5 - main ... and there you go, spawn whatever. the (:) opens an anonymous pipe via process substitution, which dies, but the pipe sticks around because you have a handle to it. i usually do a sleep 1 instead of : because its slightly racy, and i'd get a file busy error -- never happens if a real command is ran (eg, command true) ... heredoc sourcing: . /dev/stdin EOF [...] EOF ... works on every single shell i've ever tried, including busybox/etc (initramfs). i've never seen it done before -- i independently discovered it while prodding, who knew source could accept args?? -- but it often serves as a much more manageable form of eval, if there is such a thing ... -- Tudor Gheorghe ___ RLUG mailing list RLUG@lists.lug.ro http://lists.lug.ro/mailman/listinfo/rlug
Re: [rlug] Idei pornire proces în background
Mulțumesc de link - nu m-a dus capul să caut după așa ceva. Din sugestiile lor am mai încercat următoarele: # închidere stdin/out/err (nici nu știam că se pot închide) sh /jffs/script.sh - 2- - Am încercat și codul de mai sus, dar la rulare în dă eroarea: /tmp/coproc.sh: line 13: syntax error: unexpected redirection la linia exec {i} (:) {o} (:) {e} (:) Recunosc că nivelul de bash e peste capul meu și nu înțeleg ce vrea să facă, dar presupun că e și peste capul ash-ului meu. Între timp m-am apucat de cross-compilat firmware-ul tomato - mai ales încerc să cross-compilez un busybox cu un shell mai deștept (sau ceva echivalent). În caz că e prea mare, încerc și varianta cu daemon în C + fork de shell nou. Vă țin la curent cu ce îmi iese. On Wed, Jun 4, 2014 at 9:37 AM, Tudor Gheorghe thelo...@gmail.com wrote: On 06/04/2014 09:19 AM, Adrian Popa wrote: N-am screen. O să caut unul compilat static, dar problema e că mă aștept să fie 64K și nu o să am unde să-l flash-uiesc. Mă mai uit și la varianta unui wrapper simplu în C care să facă fork scriptului sh... Ai incercat o cautare pe google dupa busybox background process? Am gasit ceva interesant in primul link: http://stackoverflow.com/questions/285015/linux-prevent-a-background-process-from-being-stopped-after-closing-ssh-client #!/bin/bash IFS= run_in_coproc () { echo coproc[$1] - main read -r; echo $REPLY } # dynamic-coprocess-generator. nice. _coproc () { local i o e n=${1//[^A-Za-z0-9_]}; shift exec {i} (:) {o} (:) {e} (:) . /dev/stdin COPROC ${@} ((\$@)) $i $o 2$e $n=( $o $i $e ) COPROC } # pi-rads-of-awesome? for x in {0..5}; do _coproc COPROC$x run_in_coproc $x declare -p COPROC$x done for x in COPROC{0..5}; do . /dev/stdin RUN read -r -u \${$x[0]}; echo \$REPLY echo $x - main \${$x[1]} read -r -u \${$x[0]}; echo \$REPLY RUN done ... save as coproc.sh ... # ./coproc.sh declare -a COPROC0='([0]=21 [1]=16 [2]=23)' declare -a COPROC1='([0]=24 [1]=19 [2]=26)' declare -a COPROC2='([0]=27 [1]=22 [2]=29)' declare -a COPROC3='([0]=30 [1]=25 [2]=32)' declare -a COPROC4='([0]=33 [1]=28 [2]=35)' declare -a COPROC5='([0]=36 [1]=31 [2]=38)' coproc[0] - main COPROC0 - main coproc[1] - main COPROC1 - main coproc[2] - main COPROC2 - main coproc[3] - main COPROC3 - main coproc[4] - main COPROC4 - main coproc[5] - main COPROC5 - main ... and there you go, spawn whatever. the (:) opens an anonymous pipe via process substitution, which dies, but the pipe sticks around because you have a handle to it. i usually do a sleep 1 instead of : because its slightly racy, and i'd get a file busy error -- never happens if a real command is ran (eg, command true) ... heredoc sourcing: . /dev/stdin EOF [...] EOF ... works on every single shell i've ever tried, including busybox/etc (initramfs). i've never seen it done before -- i independently discovered it while prodding, who knew source could accept args?? -- but it often serves as a much more manageable form of eval, if there is such a thing ... -- Tudor Gheorghe ___ RLUG mailing list RLUG@lists.lug.ro http://lists.lug.ro/mailman/listinfo/rlug ___ RLUG mailing list RLUG@lists.lug.ro http://lists.lug.ro/mailman/listinfo/rlug
Re: [rlug] Idei pornire proces în background
On 06/04/2014 10:06 AM, Adrian Popa wrote: Am încercat și codul de mai sus, dar la rulare în dă eroarea: /tmp/coproc.sh: line 13: syntax error: unexpected redirection la linia exec {i} (:) {o} (:) {e} (:) Recunosc că nivelul de bash e peste capul meu și nu înțeleg ce vrea să facă, dar presupun că e și peste capul ash-ului meu. Pe bash functioneaza ok. Dar... Tipul zicea ca e testat si pe busybox. Trebuie sa inlocuiesti : din (:) cu scriptul pe care vrei sa-l rulezi. -- Tudor Gheorghe ___ RLUG mailing list RLUG@lists.lug.ro http://lists.lug.ro/mailman/listinfo/rlug
Re: [rlug] Idei pornire proces în background
Good news everyone, se pare că the hard way a dat roade. Am luat sursele tomato și am compilat un busybox minimal doar cu appleturile start-stop-daemon (și cu false) și mi-a scos un binar de ~80KB (conform instrucțiunilor de aici: http://tomatousb.org/tut:how-to-build-and-rebuild-tomato-for-total-noobs#2). Din fericire, squashfs a scos o imagine de ~40KB, așa că mă încadrez în cerințe. Momentan îmi pornesc scriptul cu: /jffs/busybox-start-stop-daemon start-stop-daemon -S -x /jffs/script.sh -b Acum rezistă închiderii terminalului. O să îmi mai compilez un busybox cu de toate pe care o să mi-l pun prin ramdisk când oi avea nevoie de vreun tool mai deștept. Mulțumesc tuturor pentru ajutor! 2014-06-04 10:10 GMT+03:00 Tudor Gheorghe thelo...@gmail.com: On 06/04/2014 10:06 AM, Adrian Popa wrote: Am încercat și codul de mai sus, dar la rulare în dă eroarea: /tmp/coproc.sh: line 13: syntax error: unexpected redirection la linia exec {i} (:) {o} (:) {e} (:) Recunosc că nivelul de bash e peste capul meu și nu înțeleg ce vrea să facă, dar presupun că e și peste capul ash-ului meu. Pe bash functioneaza ok. Dar... Tipul zicea ca e testat si pe busybox. Trebuie sa inlocuiesti : din (:) cu scriptul pe care vrei sa-l rulezi. -- Tudor Gheorghe ___ RLUG mailing list RLUG@lists.lug.ro http://lists.lug.ro/mailman/listinfo/rlug ___ RLUG mailing list RLUG@lists.lug.ro http://lists.lug.ro/mailman/listinfo/rlug
Re: [rlug] Idei pornire proces în background
Mulțumesc pentru sugestii, dar din păcate nu au funcționat următoarele variante: nohup sh /jffs/script.sh 21 /dev/null /dev/null ( ( sh /jffs/script.sh ) /dev/null /dev/null ) Scriptul pornea ok în background, dar murea imediat ce închideam shell-ul :( Varianta cu wrapper în C o să o țin minte, dar mi-e lene să mă apuc să îmi instalez un cross-compiler/build environment pentru atâta lucru. Pe sistem am un busybox relativ minimal - nu știu dacă mi-e de folos ceva din el: root@rigel:/tmp/home/root# busybox BusyBox v1.18.4 (2011-04-08 11:40:09 EEST) multi-call binary. Copyright (C) 1998-2009 Erik Andersen, Rob Landley, Denys Vlasenko and others. Licensed under GPLv2. See source distribution for full notice. Usage: busybox [function] [arguments]... or: busybox --list[-full] or: function [arguments]... BusyBox is a multi-call binary that combines many common Unix utilities into a single executable. Most people will create a link to busybox for each function they wish to use and BusyBox will act like whatever it was invoked as. Currently defined functions: [, [[, arp, arping, ash, awk, basename, cat, chmod, cmp, cp, crond, cut, date, dd, df, dirname, dmesg, du, echo, egrep, env, ether-wake, expr, fgrep, find, free, ftpget, ftpput, grep, gunzip, gzip, head, ifconfig, insmod, kill, killall, klogd, less, ln, logger, login, ls, lsmod, md5sum, mkdir, mknod, modprobe, more, mount, mv, nc, netstat, nohup, nslookup, pidof, ping, ping6, printf, ps, pscan, pwd, rm, rmdir, rmmod, route, sed, sh, sleep, sort, strings, sync, syslogd, tail, tar, telnet, telnetd, test, top, touch, tr, traceroute, traceroute6, udhcpc, umount, uname, uptime, usleep, vconfig, vi, watch, wc, wget, which, zcat O altă variantă ar mai putea fi un script de cron care să lanseze comanda periodic, iar comanda să verifice dacă pornește în buclă sau nu pe baza unui lockfile... dar nu mi se pare elegant deloc... Alte idei? 2014-06-02 23:26 GMT+03:00 zgrim zzg...@gmail.com: On 2014-06-02 15:29:40 +0300, Adrian Popa wrote: Aveți o recomandare de cum pot porni și ține în viață scriptul [...] subshells, nu știu însă dacă sintaxa e bashism (sic) ex: ( ( while true; do $stuff ; sleep 1; done ) /tmp/logfile ) map: ( ) = subshell = background /dev/null = 21 /dev/null „help wait” În fine, dacă shellu e dușmănos, poți oricând scrie un mic wrapper în C care să se daemonizeze. -- perl -MLWP::Simple -e'print$_[rand(split(q.%%\n., get(q{http://cpan.org/misc/japh})))]' ___ RLUG mailing list RLUG@lists.lug.ro http://lists.lug.ro/mailman/listinfo/rlug ___ RLUG mailing list RLUG@lists.lug.ro http://lists.lug.ro/mailman/listinfo/rlug
Re: [rlug] Idei pornire proces în background
On Tue, 2014-06-03 at 10:10 +0300, Adrian Popa wrote: Mulțumesc pentru sugestii, dar din păcate nu au funcționat următoarele variante: nohup sh /jffs/script.sh 21 /dev/null /dev/null ( ( sh /jffs/script.sh ) /dev/null /dev/null ) Scriptul pornea ok în background, dar murea imediat ce închideam shell-ul :( Varianta cu wrapper în C o să o țin minte, dar mi-e lene să mă apuc să îmi instalez un cross-compiler/build environment pentru atâta lucru. Pe sistem am un busybox relativ minimal - nu știu dacă mi-e de folos ceva din el: root@rigel:/tmp/home/root# busybox BusyBox v1.18.4 (2011-04-08 11:40:09 EEST) multi-call binary. Copyright (C) 1998-2009 Erik Andersen, Rob Landley, Denys Vlasenko and others. Licensed under GPLv2. See source distribution for full notice. Usage: busybox [function] [arguments]... or: busybox --list[-full] or: function [arguments]... BusyBox is a multi-call binary that combines many common Unix utilities into a single executable. Most people will create a link to busybox for each function they wish to use and BusyBox will act like whatever it was invoked as. Currently defined functions: [, [[, arp, arping, ash, awk, basename, cat, chmod, cmp, cp, crond, cut, date, dd, df, dirname, dmesg, du, echo, egrep, env, ether-wake, expr, fgrep, find, free, ftpget, ftpput, grep, gunzip, gzip, head, ifconfig, insmod, kill, killall, klogd, less, ln, logger, login, ls, lsmod, md5sum, mkdir, mknod, modprobe, more, mount, mv, nc, netstat, nohup, nslookup, pidof, ping, ping6, printf, ps, pscan, pwd, rm, rmdir, rmmod, route, sed, sh, sleep, sort, strings, sync, syslogd, tail, tar, telnet, telnetd, test, top, touch, tr, traceroute, traceroute6, udhcpc, umount, uname, uptime, usleep, vconfig, vi, watch, wc, wget, which, zcat O altă variantă ar mai putea fi un script de cron care să lanseze comanda periodic, iar comanda să verifice dacă pornește în buclă sau nu pe baza unui lockfile... dar nu mi se pare elegant deloc... Alte idei? treaba asta cu , nohup si 21 m-a depasit mereu si eu unul prefer o solutie de scoala primara . cand am avut probleme de genul, din cauza ca nu stiu shell prea bine, am facut 2 scripturi A = script care face treaba ( si while-ul , in cazul tau ) B = lanseaza A si-i dadeam ./B ___ RLUG mailing list RLUG@lists.lug.ro http://lists.lug.ro/mailman/listinfo/rlug
Re: [rlug] Idei pornire proces în background
Cred că e ceva mai cu moț în sistemul meu - nu merge nici varianta asta: root@rigel:/tmp/home/root# cat /tmp/script2.sh #!/bin/sh sh /jffs/script.sh 21 /dev/null /dev/null și rulat /tmp/script2.sh On Tue, Jun 3, 2014 at 10:24 AM, Valentin Cozma valen...@deversoft.ro wrote: On Tue, 2014-06-03 at 10:10 +0300, Adrian Popa wrote: Mulțumesc pentru sugestii, dar din păcate nu au funcționat următoarele variante: nohup sh /jffs/script.sh 21 /dev/null /dev/null ( ( sh /jffs/script.sh ) /dev/null /dev/null ) Scriptul pornea ok în background, dar murea imediat ce închideam shell-ul :( Varianta cu wrapper în C o să o țin minte, dar mi-e lene să mă apuc să îmi instalez un cross-compiler/build environment pentru atâta lucru. Pe sistem am un busybox relativ minimal - nu știu dacă mi-e de folos ceva din el: root@rigel:/tmp/home/root# busybox BusyBox v1.18.4 (2011-04-08 11:40:09 EEST) multi-call binary. Copyright (C) 1998-2009 Erik Andersen, Rob Landley, Denys Vlasenko and others. Licensed under GPLv2. See source distribution for full notice. Usage: busybox [function] [arguments]... or: busybox --list[-full] or: function [arguments]... BusyBox is a multi-call binary that combines many common Unix utilities into a single executable. Most people will create a link to busybox for each function they wish to use and BusyBox will act like whatever it was invoked as. Currently defined functions: [, [[, arp, arping, ash, awk, basename, cat, chmod, cmp, cp, crond, cut, date, dd, df, dirname, dmesg, du, echo, egrep, env, ether-wake, expr, fgrep, find, free, ftpget, ftpput, grep, gunzip, gzip, head, ifconfig, insmod, kill, killall, klogd, less, ln, logger, login, ls, lsmod, md5sum, mkdir, mknod, modprobe, more, mount, mv, nc, netstat, nohup, nslookup, pidof, ping, ping6, printf, ps, pscan, pwd, rm, rmdir, rmmod, route, sed, sh, sleep, sort, strings, sync, syslogd, tail, tar, telnet, telnetd, test, top, touch, tr, traceroute, traceroute6, udhcpc, umount, uname, uptime, usleep, vconfig, vi, watch, wc, wget, which, zcat O altă variantă ar mai putea fi un script de cron care să lanseze comanda periodic, iar comanda să verifice dacă pornește în buclă sau nu pe baza unui lockfile... dar nu mi se pare elegant deloc... Alte idei? treaba asta cu , nohup si 21 m-a depasit mereu si eu unul prefer o solutie de scoala primara . cand am avut probleme de genul, din cauza ca nu stiu shell prea bine, am facut 2 scripturi A = script care face treaba ( si while-ul , in cazul tau ) B = lanseaza A si-i dadeam ./B ___ RLUG mailing list RLUG@lists.lug.ro http://lists.lug.ro/mailman/listinfo/rlug ___ RLUG mailing list RLUG@lists.lug.ro http://lists.lug.ro/mailman/listinfo/rlug
Re: [rlug] Idei pornire proces în background
On Tue, 2014-06-03 at 10:46 +0300, Adrian Popa wrote: Cred că e ceva mai cu moț în sistemul meu - nu merge nici varianta asta: root@rigel:/tmp/home/root# cat /tmp/script2.sh #!/bin/sh sh /jffs/script.sh 21 /dev/null /dev/null și rulat /tmp/script2.sh nohup /tmp/script2.sh ? din ce tin eu minte 21 trebuia sa fie la final de linie d-asta ma incurcam in 21 si ___ RLUG mailing list RLUG@lists.lug.ro http://lists.lug.ro/mailman/listinfo/rlug
Re: [rlug] Idei pornire proces în background
On 3-06-2014, at 10h 24'14, Valentin Cozma wrote about Re: [rlug] Idei pornire proces în background Mulțumesc pentru sugestii, dar din păcate nu au funcționat următoarele variante: nohup sh /jffs/script.sh 21 /dev/null /dev/null ( ( sh /jffs/script.sh ) /dev/null /dev/null ) Eu aș face așa: /jffs/script.sh /dev/zero /dev/null sau /jffs/script.sh /dev/null /dev/null Și joacă‑te cu stdin, stderr și stdout să vezi din cauza căruia moare. Adică înlocuiește /dev/ceva cu fișiere pentru teste să vezi dacă merge, adică: echo '0' /tmp/stdin /jffs/script.sh /tmp/stdin /tmp/stdout Mugurel P.S. Varianta ta cu multe subsheluri mă depășește că nu înțeleg cum se face de fapt cu cele trei fișiere stdX (X=in,out,err). Încearcă mai simplu fără ele și le adaugi pe rînd, după ce vezi că merge... ___ RLUG mailing list RLUG@lists.lug.ro http://lists.lug.ro/mailman/listinfo/rlug
Re: [rlug] Idei pornire proces în background
Cand totul esueaza se va descoperi ca e un shell compilat fara job control, vezi daca nu ai si alt shell pe acolo si cum sunt lansate alte scripturi care stau in background. Mircea dar am optimizat dimensiunea C. 2014-06-03 9:57 GMT+02:00 Valentin Cozma valen...@deversoft.ro: On Tue, 2014-06-03 at 10:46 +0300, Adrian Popa wrote: Cred că e ceva mai cu moț în sistemul meu - nu merge nici varianta asta: root@rigel:/tmp/home/root# cat /tmp/script2.sh #!/bin/sh sh /jffs/script.sh 21 /dev/null /dev/null și rulat /tmp/script2.sh nohup /tmp/script2.sh ? din ce tin eu minte 21 trebuia sa fie la final de linie d-asta ma incurcam in 21 si ___ RLUG mailing list RLUG@lists.lug.ro http://lists.lug.ro/mailman/listinfo/rlug ___ RLUG mailing list RLUG@lists.lug.ro http://lists.lug.ro/mailman/listinfo/rlug
Re: [rlug] Idei pornire proces în background
Adrian Popa adrian.popa...@gmail.com wrote: O altă variantă ar mai putea fi un script de cron care să lanseze comanda periodic, iar comanda să verifice dacă pornește în buclă sau nu pe baza unui lockfile... dar nu mi se pare elegant deloc... Mai puțin elegant mi se pare ce încerci să faci în busybox. Da' care-i problema de rezolvat până la urmă? Că dacă e ceva ce trebuie să stea în memorie permanent (aka daemon), poate că nu un script e soluția cea mai potrivită. Iar dacă e ceva ce poate fi lansat din când în când, există cron. Iar pentru problemele de cron îs altfel de soluții, nu tre' să demonizezi scripturi. HTH signature.asc Description: PGP signature ___ RLUG mailing list RLUG@lists.lug.ro http://lists.lug.ro/mailman/listinfo/rlug
Re: [rlug] Idei pornire proces în background
Am mai încercat variantele următoare (fără succes): sh /jffs/script.sh /dev/zero /dev/null sh /jffs/portKnocking.sh /tmp/stdin /tmp/stdout 2/tmp/stderr Legat de job control - pare să fie un sâmbure de adevăr acolo: root@rigel:/tmp/home/root# jobs -sh: jobs: not found root@rigel:/tmp/home/root# fg -sh: fg: not found Ce-i drept sistemul e pe un flash de 4MB (și 16MB RAM), din care mai am 64K user-writable (în care îmi scriu un squashfs cu scripturile mele). Într-o versiune mai veche de tomato (fără suport de IPv6) aveam mai mult spațiu liber și țin minte că puteam porni scripturi la startup cu subshell-uri. Scriptul pe care îl am eu vrea să fie un daemon și speram ca busyboxul să fie suficient pentru nevoile mele. O să încerc să sap prin scripturile de startup să văd cum de rămân persistente, însă, din păcate nu văd nimic gen system-v... Mă gândesc acum că chiar dacă aș face un wrapper în C care să lanseze scriptul cu stdin/out/error decuplate, cine îmi garantează că ar funcționa shell-ul ăla? Altă variantă posibil nefiabilă ar fi să recompilezi busybox doar cu suport extins de sh + jobs și să îl chem în shellul ăsta când vreau să-l lansez, doar că nu știu dacă o să-mi încape busyboxul nou în 64k... Problems, problems... 2014-06-03 11:04 GMT+03:00 Mișu Moldovan du...@gnome.org: Adrian Popa adrian.popa...@gmail.com wrote: O altă variantă ar mai putea fi un script de cron care să lanseze comanda periodic, iar comanda să verifice dacă pornește în buclă sau nu pe baza unui lockfile... dar nu mi se pare elegant deloc... Mai puțin elegant mi se pare ce încerci să faci în busybox. Da' care-i problema de rezolvat până la urmă? Că dacă e ceva ce trebuie să stea în memorie permanent (aka daemon), poate că nu un script e soluția cea mai potrivită. Iar dacă e ceva ce poate fi lansat din când în când, există cron. Iar pentru problemele de cron îs altfel de soluții, nu tre' să demonizezi scripturi. HTH ___ RLUG mailing list RLUG@lists.lug.ro http://lists.lug.ro/mailman/listinfo/rlug
Re: [rlug] Idei pornire proces în background
On Tuesday 03 June 2014 11:48:12 Adrian Popa wrote: Am mai încercat variantele următoare (fără succes): sh /jffs/script.sh /dev/zero /dev/null sh /jffs/portKnocking.sh /tmp/stdin /tmp/stdout 2/tmp/stderr Legat de job control - pare să fie un sâmbure de adevăr acolo: root@rigel:/tmp/home/root# jobs -sh: jobs: not found root@rigel:/tmp/home/root# fg -sh: fg: not found Ce-i drept sistemul e pe un flash de 4MB (și 16MB RAM), din care mai am 64K user-writable (în care îmi scriu un squashfs cu scripturile mele). Într-o versiune mai veche de tomato (fără suport de IPv6) aveam mai mult spațiu liber și țin minte că puteam porni scripturi la startup cu subshell-uri. Scriptul pe care îl am eu vrea să fie un daemon și speram ca busyboxul să fie suficient pentru nevoile mele. O să încerc să sap prin scripturile de startup să văd cum de rămân persistente, însă, din păcate nu văd nimic gen system-v... La pornire busybox ruleaza init ( ca orice linux dealtfel) care in unele versiuni e un symlink la busybox iar in altele e un script. Daca esti in cazul 2 poti piti si daemon-ul tau pe acolo, iar cazul unu se poate reduce la cazul doi inlocuind symlink-ul cu un script, in functie de ce altceva mai trebuie sa pornesti. Mă gândesc acum că chiar dacă aș face un wrapper în C care să lanseze scriptul cu stdin/out/error decuplate, cine îmi garantează că ar funcționa shell-ul ăla? Altă variantă posibil nefiabilă ar fi să recompilezi busybox doar cu suport extins de sh + jobs și să îl chem în shellul ăsta când vreau să-l lansez, doar că nu știu dacă o să-mi încape busyboxul nou în 64k... Problems, problems... 2014-06-03 11:04 GMT+03:00 Mișu Moldovan du...@gnome.org: Adrian Popa adrian.popa...@gmail.com wrote: O altă variantă ar mai putea fi un script de cron care să lanseze comanda periodic, iar comanda să verifice dacă pornește în buclă sau nu pe baza unui lockfile... dar nu mi se pare elegant deloc... Mai puțin elegant mi se pare ce încerci să faci în busybox. Da' care-i problema de rezolvat până la urmă? Că dacă e ceva ce trebuie să stea în memorie permanent (aka daemon), poate că nu un script e soluția cea mai potrivită. Iar dacă e ceva ce poate fi lansat din când în când, există cron. Iar pentru problemele de cron îs altfel de soluții, nu tre' să demonizezi scripturi. HTH ___ RLUG mailing list RLUG@lists.lug.ro http://lists.lug.ro/mailman/listinfo/rlug -- Mihai Bădici http://mihai.badici.ro ___ RLUG mailing list RLUG@lists.lug.ro http://lists.lug.ro/mailman/listinfo/rlug
Re: [rlug] Idei pornire proces în background
On Tuesday 03 June 2014 11:48:12 Adrian Popa wrote: Am mai încercat variantele următoare (fără succes): sh /jffs/script.sh /dev/zero /dev/null sh /jffs/portKnocking.sh /tmp/stdin /tmp/stdout 2/tmp/stderr Legat de job control - pare să fie un sâmbure de adevăr acolo: La bitslack-ul meu ( care provine dintr-un installer de slackware) fisierul inittab incepe cu: # /etc/inittab # Boot-time system configuration/initialization script. # This is run first except when booting in single-user mode. ::sysinit:/etc/rc.d/rc.S Astfel ca la boot executa rc.S inainte de a porni consola. Presupun ca poti face la fel. ___ RLUG mailing list RLUG@lists.lug.ro http://lists.lug.ro/mailman/listinfo/rlug
Re: [rlug] Idei pornire proces în background
Așa am sperat și eu să fie, dar nu e nimic la vedere (cel puțin pe unde mă uit eu): root@rigel:/tmp/home/root# ls /init ls: /init: No such file or directory root@rigel:/tmp/home/root# cat /proc/cmdline root=/dev/mtdblock2 noinitrd console=ttyS0,115200 root@rigel:/tmp/home/root# cat /etc/int* cat: can't open '/etc/int*': No such file or directory root@rigel:/tmp/home/root# cat /etc/rc* cat: can't open '/etc/rc*': No such file or directory 2014-06-03 11:59 GMT+03:00 Mihai Badici mi...@badici.ro: On Tuesday 03 June 2014 11:48:12 Adrian Popa wrote: Am mai încercat variantele următoare (fără succes): sh /jffs/script.sh /dev/zero /dev/null sh /jffs/portKnocking.sh /tmp/stdin /tmp/stdout 2/tmp/stderr Legat de job control - pare să fie un sâmbure de adevăr acolo: La bitslack-ul meu ( care provine dintr-un installer de slackware) fisierul inittab incepe cu: # /etc/inittab # Boot-time system configuration/initialization script. # This is run first except when booting in single-user mode. ::sysinit:/etc/rc.d/rc.S Astfel ca la boot executa rc.S inainte de a porni consola. Presupun ca poti face la fel. ___ RLUG mailing list RLUG@lists.lug.ro http://lists.lug.ro/mailman/listinfo/rlug ___ RLUG mailing list RLUG@lists.lug.ro http://lists.lug.ro/mailman/listinfo/rlug
Re: [rlug] Idei pornire proces în background
On Tuesday, June 03, 2014 12:16:29 Adrian Popa wrote: Așa am sperat și eu să fie, dar nu e nimic la vedere (cel puțin pe unde mă uit eu): root@rigel:/tmp/home/root# ls /init ls: /init: No such file or directory ls /sbin/init ? ___ RLUG mailing list RLUG@lists.lug.ro http://lists.lug.ro/mailman/listinfo/rlug
Re: [rlug] Idei pornire proces în background
On Tuesday 03 June 2014 12:19:38 Claudiu Nicolaie CISMARU wrote: On Tuesday, June 03, 2014 12:16:29 Adrian Popa wrote: Așa am sperat și eu să fie, dar nu e nimic la vedere (cel puțin pe unde mă uit eu): root@rigel:/tmp/home/root# ls /init ls: /init: No such file or directory ls /sbin/init ? Sunt destul de sigur ca daca nu exista poate fi inventat ( creat) ___ RLUG mailing list RLUG@lists.lug.ro http://lists.lug.ro/mailman/listinfo/rlug -- Mihai Bădici http://mihai.badici.ro ___ RLUG mailing list RLUG@lists.lug.ro http://lists.lug.ro/mailman/listinfo/rlug
Re: [rlug] Idei pornire proces în background
/sbin/init există (symlink către /sbin/rc), dar din păcate e binar... strings pe el îmi arată că are treabă cu iptables, montatul partiției /jffs, DDNS, QoS, DHCP6, dropbear, etc. Pare să aibă și el appleturi în genul busybox: root@rigel:/tmp/home/root# ls -l /sbin | grep rc lrwxrwxrwx1 root root 2 Apr 8 2011 buttons - rc lrwxrwxrwx1 root root 2 Apr 8 2011 console - rc lrwxrwxrwx1 root root 2 Apr 8 2011 ddns-update - rc lrwxrwxrwx1 root root 2 Apr 8 2011 dhcp6c-state - rc lrwxrwxrwx1 root root 2 Apr 8 2011 dhcpc-event - rc lrwxrwxrwx1 root root 2 Apr 8 2011 dhcpc-release - rc lrwxrwxrwx1 root root 2 Apr 8 2011 dhcpc-renew - rc lrwxrwxrwx1 root root 2 Apr 8 2011 disconnected_pppoe - rc lrwxrwxrwx1 root root 2 Apr 8 2011 gpio - rc lrwxrwxrwx1 root root 2 Apr 8 2011 halt - rc lrwxrwxrwx1 root root 2 Apr 8 2011 hotplug - rc lrwxrwxrwx1 root root 2 Apr 8 2011 init - rc lrwxrwxrwx1 root root 2 Apr 8 2011 led - rc lrwxrwxrwx1 root root 2 Apr 8 2011 listen - rc lrwxrwxrwx1 root root 2 Apr 8 2011 mtd-erase - rc lrwxrwxrwx1 root root 2 Apr 8 2011 mtd-unlock - rc lrwxrwxrwx1 root root 2 Apr 8 2011 mtd-write - rc lrwxrwxrwx1 root root 2 Apr 8 2011 ppp_event - rc lrwxrwxrwx1 root root 2 Apr 8 2011 radio - rc -r-x--1 root root184392 Apr 8 2011 rc lrwxrwxrwx1 root root 2 Apr 8 2011 rcheck - rc lrwxrwxrwx1 root root 2 Apr 8 2011 reboot - rc lrwxrwxrwx1 root root 2 Apr 8 2011 redial - rc lrwxrwxrwx1 root root 2 Apr 8 2011 sched - rc lrwxrwxrwx1 root root 2 Apr 8 2011 service - rc lrwxrwxrwx1 root root 2 Apr 8 2011 wldist - rc Service pare interesant... Update: http://www.linksysinfo.org/index.php?threads/starting-stopping-and-restarting-services-from-cli-command-line-via-ssh-or-telnet.26491/ nu prea - sunt doar serviciile interne ale lui. Mai sap - mulțumesc de ajutor până acum. 2014-06-03 12:27 GMT+03:00 Mihai Badici mi...@badici.ro: On Tuesday 03 June 2014 12:19:38 Claudiu Nicolaie CISMARU wrote: On Tuesday, June 03, 2014 12:16:29 Adrian Popa wrote: Așa am sperat și eu să fie, dar nu e nimic la vedere (cel puțin pe unde mă uit eu): root@rigel:/tmp/home/root# ls /init ls: /init: No such file or directory ls /sbin/init ? Sunt destul de sigur ca daca nu exista poate fi inventat ( creat) ___ RLUG mailing list RLUG@lists.lug.ro http://lists.lug.ro/mailman/listinfo/rlug -- Mihai Bădici http://mihai.badici.ro ___ RLUG mailing list RLUG@lists.lug.ro http://lists.lug.ro/mailman/listinfo/rlug ___ RLUG mailing list RLUG@lists.lug.ro http://lists.lug.ro/mailman/listinfo/rlug
Re: [rlug] Idei pornire proces în background
Mi-a venit o idee sinistră, dar nu știu dacă e fezabilă... Am un shell pornit pe ttyS0 care e nefolosit. Am cum să-l conving pe el să-mi execute scriptul meu? Măcar știu că el o să fie always on... Știu cum să fac echo la text pe ttyS0, dar nu cred că am cum să pornesc un program pe shell-ul ăla fără să am acces la el - există vreo posibilitate? 2014-06-03 13:13 GMT+03:00 Adrian Popa adrian.popa...@gmail.com: /sbin/init există (symlink către /sbin/rc), dar din păcate e binar... strings pe el îmi arată că are treabă cu iptables, montatul partiției /jffs, DDNS, QoS, DHCP6, dropbear, etc. Pare să aibă și el appleturi în genul busybox: root@rigel:/tmp/home/root# ls -l /sbin | grep rc lrwxrwxrwx1 root root 2 Apr 8 2011 buttons - rc lrwxrwxrwx1 root root 2 Apr 8 2011 console - rc lrwxrwxrwx1 root root 2 Apr 8 2011 ddns-update - rc lrwxrwxrwx1 root root 2 Apr 8 2011 dhcp6c-state - rc lrwxrwxrwx1 root root 2 Apr 8 2011 dhcpc-event - rc lrwxrwxrwx1 root root 2 Apr 8 2011 dhcpc-release - rc lrwxrwxrwx1 root root 2 Apr 8 2011 dhcpc-renew - rc lrwxrwxrwx1 root root 2 Apr 8 2011 disconnected_pppoe - rc lrwxrwxrwx1 root root 2 Apr 8 2011 gpio - rc lrwxrwxrwx1 root root 2 Apr 8 2011 halt - rc lrwxrwxrwx1 root root 2 Apr 8 2011 hotplug - rc lrwxrwxrwx1 root root 2 Apr 8 2011 init - rc lrwxrwxrwx1 root root 2 Apr 8 2011 led - rc lrwxrwxrwx1 root root 2 Apr 8 2011 listen - rc lrwxrwxrwx1 root root 2 Apr 8 2011 mtd-erase - rc lrwxrwxrwx1 root root 2 Apr 8 2011 mtd-unlock - rc lrwxrwxrwx1 root root 2 Apr 8 2011 mtd-write - rc lrwxrwxrwx1 root root 2 Apr 8 2011 ppp_event - rc lrwxrwxrwx1 root root 2 Apr 8 2011 radio - rc -r-x--1 root root184392 Apr 8 2011 rc lrwxrwxrwx1 root root 2 Apr 8 2011 rcheck - rc lrwxrwxrwx1 root root 2 Apr 8 2011 reboot - rc lrwxrwxrwx1 root root 2 Apr 8 2011 redial - rc lrwxrwxrwx1 root root 2 Apr 8 2011 sched - rc lrwxrwxrwx1 root root 2 Apr 8 2011 service - rc lrwxrwxrwx1 root root 2 Apr 8 2011 wldist - rc Service pare interesant... Update: http://www.linksysinfo.org/index.php?threads/starting-stopping-and-restarting-services-from-cli-command-line-via-ssh-or-telnet.26491/ nu prea - sunt doar serviciile interne ale lui. Mai sap - mulțumesc de ajutor până acum. 2014-06-03 12:27 GMT+03:00 Mihai Badici mi...@badici.ro: On Tuesday 03 June 2014 12:19:38 Claudiu Nicolaie CISMARU wrote: On Tuesday, June 03, 2014 12:16:29 Adrian Popa wrote: Așa am sperat și eu să fie, dar nu e nimic la vedere (cel puțin pe unde mă uit eu): root@rigel:/tmp/home/root# ls /init ls: /init: No such file or directory ls /sbin/init ? Sunt destul de sigur ca daca nu exista poate fi inventat ( creat) ___ RLUG mailing list RLUG@lists.lug.ro http://lists.lug.ro/mailman/listinfo/rlug -- Mihai Bădici http://mihai.badici.ro ___ RLUG mailing list RLUG@lists.lug.ro http://lists.lug.ro/mailman/listinfo/rlug ___ RLUG mailing list RLUG@lists.lug.ro http://lists.lug.ro/mailman/listinfo/rlug
Re: [rlug] Idei pornire proces în background
On Tuesday 03 June 2014 13:29:52 Adrian Popa wrote: Mi-a venit o idee sinistră, dar nu știu dacă e fezabilă... Am un shell pornit pe ttyS0 care e nefolosit. Am cum să-l conving pe el să-mi execute scriptul meu? Măcar știu că el o să fie always on... Știu cum să fac echo la text pe ttyS0, dar nu cred că am cum să pornesc un program pe shell-ul ăla fără să am acces la el - există vreo posibilitate? 2014-06-03 13:13 GMT+03:00 Adrian Popa adrian.popa...@gmail.com: /sbin/init există (symlink către /sbin/rc), dar din păcate e binar... strings pe el îmi arată că are treabă cu iptables, montatul partiției /jffs, DDNS, QoS, DHCP6, dropbear, etc. Pai si daca stergi /sbin/init si scrii un /sbin/init ca un script cu continutul: /bin/myscript; /sbin/rc ? ___ RLUG mailing list RLUG@lists.lug.ro http://lists.lug.ro/mailman/listinfo/rlug
Re: [rlug] Idei pornire proces în background
Mi-e dificil - ar trebui să refac squashfs-ul care e scris pe mtdblock2 - e un oarecare risc de brick... mount -o bind peste el nu am cum să fac, că s-ar executa prea târziu în startup și #2, /bin/script e o buclă infinită, deci routerul meu n-ar mai face routare :) 2014-06-03 13:46 GMT+03:00 Mihai Badici mi...@badici.ro: On Tuesday 03 June 2014 13:29:52 Adrian Popa wrote: Mi-a venit o idee sinistră, dar nu știu dacă e fezabilă... Am un shell pornit pe ttyS0 care e nefolosit. Am cum să-l conving pe el să-mi execute scriptul meu? Măcar știu că el o să fie always on... Știu cum să fac echo la text pe ttyS0, dar nu cred că am cum să pornesc un program pe shell-ul ăla fără să am acces la el - există vreo posibilitate? 2014-06-03 13:13 GMT+03:00 Adrian Popa adrian.popa...@gmail.com: /sbin/init există (symlink către /sbin/rc), dar din păcate e binar... strings pe el îmi arată că are treabă cu iptables, montatul partiției /jffs, DDNS, QoS, DHCP6, dropbear, etc. Pai si daca stergi /sbin/init si scrii un /sbin/init ca un script cu continutul: /bin/myscript; /sbin/rc ? ___ RLUG mailing list RLUG@lists.lug.ro http://lists.lug.ro/mailman/listinfo/rlug ___ RLUG mailing list RLUG@lists.lug.ro http://lists.lug.ro/mailman/listinfo/rlug
Re: [rlug] Idei pornire proces în background
On Tue, 3 Jun 2014, Adrian Popa wrote: Mi-e dificil - ar trebui s? refac squashfs-ul care e scris pe mtdblock2 - e un oarecare risc de brick... mount -o bind peste el nu am cum s? fac, c? s-ar executa prea t?rziu ?n startup ?i #2, /bin/script e o bucl? infinit?, deci routerul meu n-ar mai face routare :) Pe minunea aia ai aplicatia screen sau poate fi instalata? Daca poti face rost de screen acolo il pornesti in mod detached si sanatate, scriptul tau va avea si terminale si tot ce-i trebuie. -- I'm a genuine network and sys admin. I swear, I curse, I stick my dick into things in order to fix them. So don't ack like you're having a bad day with me around, 'cause I'll have fix to you and will not be able to fight it! ___ RLUG mailing list RLUG@lists.lug.ro http://lists.lug.ro/mailman/listinfo/rlug
[rlug] Idei pornire proces în background
Salut, Am un router WRT54GL ce rulează TomatoUSB (Tomato v1.28. MIPSR1PD K26 MiniIPv6). Vreau să pornesc un script în background la startup. Scriptul (.sh) are o buclă infinită în care verifică anumite lucruri și ia anumite decizii. Totul funcționează perfect cu excepția execuției scriptului în background la startup (partea de startup e ok, doar că scriptul moare imediat după închiderea shellului). Dacă îl pornesc de mână funcționează cât timp shellul e activ. Am încercat următoarele variante: logger -s script Pornire script; ( sh /jffs/script.sh 21 /dev/null ) logger -s script Pornire script; nohup sh /jffs/script.sh 21 /dev/null Din păcate pe sistem nu am disown sau screen să încerc și cu ele. Aveți o recomandare de cum pot porni și ține în viață scriptul fără să am un shell activ (mă gândeam să-l pornesc de pe ttyS0 și să-l țin bind-uit acolo, dar nu știu cum să redirectez ttyS0 în stdin-ul scriptului... Mulțumesc de sugestii Adrian ___ RLUG mailing list RLUG@lists.lug.ro http://lists.lug.ro/mailman/listinfo/rlug
Re: [rlug] Idei pornire proces în background
Totul funcționează perfect cu excepția execuției scriptului în background la startup (partea de startup e ok, doar că scriptul moare imediat după închiderea shellului). Dacă îl pornesc de mână funcționează cât timp shellul e activ. nohup? ___ RLUG mailing list RLUG@lists.lug.ro http://lists.lug.ro/mailman/listinfo/rlug
Re: [rlug] Idei pornire proces în background
nohup? Temporary blindness here, sorry. ___ RLUG mailing list RLUG@lists.lug.ro http://lists.lug.ro/mailman/listinfo/rlug
Re: [rlug] Idei pornire proces în background
On 2014-06-02 15:29:40 +0300, Adrian Popa wrote: Aveți o recomandare de cum pot porni și ține în viață scriptul [...] subshells, nu știu însă dacă sintaxa e bashism (sic) ex: ( ( while true; do $stuff ; sleep 1; done ) /tmp/logfile ) map: ( ) = subshell = background /dev/null = 21 /dev/null „help wait” În fine, dacă shellu e dușmănos, poți oricând scrie un mic wrapper în C care să se daemonizeze. -- perl -MLWP::Simple -e'print$_[rand(split(q.%%\n., get(q{http://cpan.org/misc/japh})))]' ___ RLUG mailing list RLUG@lists.lug.ro http://lists.lug.ro/mailman/listinfo/rlug