Haluan etsiä tiedostoja komennolla grep hakemistossa /var/run

/var/run tallentaa järjestelmässä käynnissä olevat prosessit ja sillä on tiedostoja pid -laajennus. Haluan saada luettelon kaikista tiedostoista, joiden tiedostotunniste on pid.

Komento Käytän sudo grep -nr "*.pid" . (Suoritan tämän komennon hakemistosta /var/run)

Se ei näytä lähtöä. Käytän Ubuntu 14.04 LTS: ää.

Kommentit

  • Se ei ole oikea kuvaus tuotteesta /var/run. Parhaimmillaan työskentelet väärinkäsityksessä siitä, että PID-tiedostot ovat välttämättömyys, vaikka itse asiassa ne ovat vaarallinen ja erittäin puutteellinen mekanismi , jolla maailma on oh-so viimeinen oppinut viimein viisauden päästä eroon.

Vastaa

TL; DR : grep on väärä työkalu, käytä find oikeilla vaihtoehdoilla

Jos teet stat /var/run, huomaat nopeasti, että /var/run on symlinkki osastoon /run hakemisto.

$ stat /var/run File: /var/run -> /run Size: 4 Blocks: 0 IO Block: 4096 symbolic link Device: 801h/2049d Inode: 696874 Links: 1 Access: (0777/lrwxrwxrwx) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2018-02-07 13:17:01.225178554 +0800 Modify: 2017-12-18 20:44:12.898113636 +0800 Change: 2017-12-18 20:44:12.898113636 +0800 

Joten tarvitset todella /run hakemiston. Tiedostojen etsimiseen tietyllä tiedostonimellä tarvitset find -komennon:

$ find /run -name "*.pid" /run/charon.pid /run/starter.charon.pid /run/dhclient-wlp2s0.pid 

Koska jotkut hakemiston tiedostot kuuluvat pääkäyttäjän tai muiden järjestelmän käyttäjien kanssa, sinun on ehkä käytettävä komentoa sudo .

Vaihtoehtoisesti voit käyttää -L -merkkiä sallimaan seuraavien symlinkkien käyttö ja soittamalla find päällä /var/run:

$ find -L /var/run -name "*.pid" /var/run/charon.pid /var/run/starter.charon.pid /var/run/dhclient-wlp2s0.pid 

Huomaa myös, että grep on väärä työkalu työhön. grep on tarkoitettu tekstimallien etsimiseen sisältä tekstitiedostoja, ei niiden tiedostonimissä.

Mainitsit myös:

/ var / run tallentaa järjestelmässä käynnissä olevat prosessit ja sillä on pid-tiedostotiedostoja

Se on oikeastaan virheellinen. Prosessitiedot kuuluvat /proc -kansioon. jotkut ohjelmat käyttävät tiedostoja .pid. estää useiden kopioiden suorittaminen samasta prosessista (hyvin, yksi mahdollisista tavoista käyttää näitä tiedostoja). Katso tämä pinonkulun viesti viitteeksi sekä tämä erittäin suosittu vastaus osoitteessa unix.se. Vaikka hakemisto kuuluu pääkäyttäjälle, älä oleta, että se koskee vain käynnistys- ja daemon-sovelluksia; komentosarjat aloitettu Käyttäjän juurioikeudet voisivat kirjoittaa hakemistoon yhtä helposti.

Kommentit

  • /var/run/ välttää tarvetta -L. Muista myös, että Ubuntu 14 LTS käyttää Upstartia, ja asia, joka tosiasiassa estää saman ohjelman useita kopioita käynnissä useina prosesseina, on Upstart tietäen, ettei niitä aloiteta.
  • @JdeBP Anteeksi, find /var/run ei toimi ' minun tapauksessani. find --version raportoi find (GNU findutils) 4.7.0-git. Joten ainakin minun versiossani GNU find se tarvitsee -L -lipun. En ole varma siitä, miten BSD find käsittelee asioita. Kiva tietää, että noin 14.04 Ubuntu ' s Upstart -ominaisuus, vaikka se ei auta ' apuna skripteissä, jotka haluavat välttää useita itsekopioita käynnissä, joten ainakin askubuntussa olemme ehdottaneet .pid -tiedostojen käyttämistä siihen.
  • Luet nopeasti mitä kirjoitin. Lue se hitaasti uudelleen ja huomioi tarkka merkkijono. (-:
  • @JdeBP Voi … Viimeisen kauttaviivan lisääminen toimii …

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *