Portál AbcLinuxu, 13. května 2025 20:12
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:
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 '.'
Velmi dobrá myšlenka. Díky!
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 diskIMHO 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
/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)...
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é.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.