Ndichiongorora nyika network ndakawona a chinyorwa chinonakidza (iyo yandinounza pano nechinyorwa nekuti inotsanangurwa zvinehunyanzvi) apo munyori wayo anotiratidza maitiro ekuita zvinyorwa zvedu zvebash zvine simba kushandisa misungo.
Gadzira zvinyorwa zvako zvebhash zvakanyanya kusimba nemisungo
Fungidzira kuti une bash script inomhanya zuva rega rega maawa matanhatu ega ega uye kuti pane imwe nguva inotadza kana iwo iwo iwo script anomhanya kaviri panguva imwe chete. Aya mamiriro maviri haana kugadzikana sezvo ivo vachida kupindira kwevanhu kuti vagadziriswe kana pane dzimwe nguva vasingakwanise kugadziriswa, vachisiya iyo system iri mukusaenderana mamiriro. Mhinduro yeizvi, pakati pevamwe, ndeye kushandisa misungo.
Misungo iri nyore uye inoshanda nzira yekudzora kuburitswa kwe bash zvinyorwa. Ngatidzokerei kune imwecheteyo yekutanga mamiriro, kana iyo script ikamiswa nemaoko, semuenzaniso ne ctrl-c, yakavhiringidzwa kudzorera chiratidzo chinobuda.
INT
uye kana zvichizopera na
kill
ipapo goho raizove
TERM
.
Ese anokwanisa kubuda makodhi anogona kutariswa pamwe
kill -l
zvisinei zvinonyanya kushandiswa ndizvozvo chaizvo
INT, TERM, Buda
Kana iyo script iine, semuenzaniso, yefaira yekuenderana ne
rsync
chinhu chinonzwisisika kuvimba neyakavhara faira risingatenderi script kumhanya panguva imwe chete:
LOCK = "/ var / run / rsync.lock" kana [! -e $ Khiya]; wobva wabata $ LOCK rsync -avz foo bar rm $ LOCK zvimwe echo "rsync iri kutotanga" fi
MuSpanish yakajeka, script iri pamusoro inotarisa kana iyo yekukiya faira iripo uye kana isipo, inoigadzira uye gare gare inoita iwo unoenderana iwo wekuraira, pakupedzisira kudzima iyo yekukiya faira. Kana iyo faira iripo, script inongotumira meseji kumushandisi inoratidza kuti rairo iri kutoshanda.
Nekudaro, kana paine chinetso mamiriro anogona kuitika kuti iyo yekukiya faira haina kubviswa, ichiparadza zvisingadiwe mhedzisiro. Mhinduro yacho yakapusa:
LOCK = "/ var / run / rsync.lock" kana [! -e $ Khiya]; wobva wateya "rm -f $ LOCK; buda" INT TERM EXIT bata $ LOCK rsync -avz foo bar rm $ LOCK trap - INT TERM EXIT imwe echo "rsync iri kutomhanya" fi
Kunyanya kweiyi mhinduro ndeyekuti iwo murairo wakavharirwa musungo, kuitira kuti kana chiratidzo chichigamuchirwa
INT, TERM, Buda
iyo script inomira uye inobvisa iyo yekukiya faira
Izvo zvinofanirwa kutaura kuti panogona kuve nemakwikwi mamiriro mune script iripamusoro pakati penguva iyo yekuvhara faira inosimbiswa uye nenguva iyo yaakasikwa. Imwe mhinduro inogona kunge iri yekushandisa redirect uye bash's noclobber mode isingatungamire kune iriko faira:
LOCK = "/ var / run / rsync.lock" if (set -o noclobber; echo $$> "$ LOCK") 2> / dev / null; wobva watevera 'rm -f "$ LOCK"; kubuda $? ' INT TERM BVA rsync -avz foo bar rm -f $ KUSVIRA musungo - INT TERM BVA zvimwe echo "rsync iri kutomhanya: $ (kati $ LCK)"
Iko kusarudzika kweyekupedzisira ndeyekuti inoshandiswa sezvandanga ndambotaura, iyo noclobber modhi uye kuti iyo yekukiya faira ine iyo PID yeichi chiitiko chiri kuitwa.
Izvo zvakakoshawo kutaura kuti kune mamwe mhinduro senge
flock
o
solo
zvisinei mune ino positi ini ndaida kugovera mhinduro ne bash zviwanikwa zviwanikwa. Unogona kudzidza zvishoma nezve Misungo neizvi yakanakisa gwara.
Hukuru! Kutenda nekugovana.
Chinyorwa chakanaka, ingochinja 'echo "rsync iri kutoshanda: $ (kati $ LCK)"' ku 'echo "rsync iri kutoshanda: $ (kati $ LOCK)"'
Reply with quote
Chinyorwa chinonakidza kwazvo, hongu changamire! Izvi ndinochengeta.
Iwo unobatsira kwazvo rairo yekuisa mundangariro. Ini ndaishandisa mune chinyorwa chandakaburitsa muchiposita, kudzima mamwe mafaera ayo script akagadzira paakamiswa.
Inonakidza kwazvo, hongu changamire.