Portál AbcLinuxu, 13. května 2025 20:12

Dotaz: Bash a předání hodnoty procesu běžícímu na pozadí

Zdeněk Zámečník avatar 7.4.2009 19:30 Zdeněk Zámečník | skóre: 26
Bash a předání hodnoty procesu běžícímu na pozadí
Přečteno: 320×
Odpovědět | Admin

Dokázal by mi někdo poradit, jak předat nějakou krátkou informaci skriptu v bashi, který běží na pozadí? Nutno podotknout, že skript běží ve smyčce, takže použití pojmenované roury je nemožné, protože by mi skript zastavoval.

Prvotní myšlenka komunikace přes soubor se mi moc nelíbí, komu by se taky líbilo neustálé zapisování a čtení na disk. Je nějaká možnost, jak vytvořit něco jako soubor přímo v operační paměti? Našel jsem nějakou zmínku o /dev/shm, ale nechce se mi moc věřit, že můžu přímo sem zapisovat jako by se nechumelilo.

Jako další možnost jsem viděl unix sockety, z toho, co jsem ale dohledal, odhaduji, že s nimi přímo bash pracovat neumí...

Předem díky za jakékoliv popostrčení.


Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

7.4.2009 20:33 Johny666 | skóre: 4 | blog: johnuv_blog
Rozbalit Rozbalit vše Re: Bash a předání hodnoty procesu běžícímu na pozadí
Odpovědět | | Sbalit | Link | Blokovat | Admin

 A nestacilo by zachyceni signalu. A jen v tom pripade si nacist data ze souboru?

Jednoduchy priklad pouziti :

 

#!/bin/bash

TMP="."

trap "TMP=\"-\" " SIGUSR1

while :
do
    sleep 1
    echo -n $TMP
done

 

Pak staci zavolat :

kill -SIGUSR1 'pid procesu'

a skript zacne vypisovat '-' misto puvodni '.'

Zdeněk Zámečník avatar 7.4.2009 21:05 Zdeněk Zámečník | skóre: 26
Rozbalit Rozbalit vše Re: Bash a předání hodnoty procesu běžícímu na pozadí

Velmi dobrá myšlenka. Díky!

7.4.2009 20:40 Vojtěch Horký | skóre: 39 | blog: Vojtův zápisník | Praha
Rozbalit Rozbalit vše Re: Bash a předání hodnoty procesu běžícímu na pozadí
Odpovědět | | Sbalit | Link | Blokovat | Admin
Nutno podotknout, že skript běží ve smyčce, takže použití pojmenované roury je nemožné, protože by mi skript zastavoval.
A co kdyby z ní zkoušel číst, jenom když k tomu dostane pokyn - že by po obdržení signálu (třeba SIGUSR1) přečetl, co je v ní.
neustálé zapisování a čtení na disk
IMHO pokud by se ten soubor vytvořil a hned zase smazal, tak k zápisu na disk ani nedojde, protože zůstane celou dobu někde v cache.
Našel jsem nějakou zmínku o /dev/shm, ale nechce se mi moc věřit, že můžu přímo sem zapisovat jako by se nechumelilo.
A proč ne :-)? Pokud budete komunikovat přes soubory, tak stejně musíte zjistit, kde ty pomocné soubory (nebo roury, to je fuk) budete vytvářet - tak můžete rovnou zkusit, jestli tenhle adresář existuje (a je zapisovatelný) a nebo to dávat do /tmp.
Jako další možnost jsem viděl unix sockety, z toho, co jsem ale dohledal, odhaduji, že s nimi přímo bash pracovat neumí...
V tomhle případě by se ale použití těhle soketů nelišilo od roury (až na tu obousměrnost)...
I am always ready to learn although I do not always like to be taught. (W. Churchill)
7.4.2009 20:50 pht | skóre: 48 | blog: pht
Rozbalit Rozbalit vše Re: Bash a předání hodnoty procesu běžícímu na pozadí
V tomhle případě by se ale použití těhle soketů nelišilo od roury (až na tu obousměrnost)...

Linuxové roury jsou obousměrné.
In Ada the typical infinite loop would normally be terminated by detonation.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.