Prosíme přihlašte se nebo zaregistrujte.

Přihlašte se svým uživatelským jménem a heslem.
Blog Ubuntu -- Správa "projektů" české komunity Ubuntu

Novinky: Školení nejen k OS Ubuntu pro širokou veřejnost, více informací zde.

Autor Téma: Skript/pomoc s vysvetlenim spustanych procesov.  (Přečteno 1659 krát)

TIBOR

  • Guru
  • *****
  • Příspěvků: 5774
  • Karma: +429/-20
  • Som uzivatel linuxovej distribucie, som linuxak?
    • Zobrazit profil
Skript/pomoc s vysvetlenim spustanych procesov.
« kdy: 14 Září 2016, 20:54:50 »
Zdravim.
Spravil som si skript, tu je cely, pre istotu.
Kód: [Vybrat]
#!/bin/bash
#xgamma -rgamma 0.6
#xgamma -ggamma 0.6
#xgamma -bgamma 0.6
                   #zisti PID prave spustaneho procesu
ja=$$
                   #nacita PID spustenych procesov z nazvom gamma0.75
cislo_procesu=$(ps -A | grep -i "gamma0.75"|awk '{print $1}'|tr '\n' ' ')
                   #zisti ci PID procesu nieje rovnaky ako prave spustany
                   #ak nieje zabije ho ak je necha ho bezat
for PID in $cislo_procesu; do
  if [ "$PID" != "$ja" ]; then
      kill -9 "$PID"
  fi
done
                   #zistuje ci je v glxinfo ako device zadany intel
                   #/tato cast nieje nutna k fungovaniu skriptu az po while; do/
karta_intel=$(glxinfo | grep -ic "device.*intel")
                   #ak je device intel zapise do suboru GK intel
                   #ak je device nvidia zapise do suboru GK nvidia
                   #tento zapis sluzi na zobrazenie v conky
if [ "$karta_intel" -eq 1 ]; then
    echo "Intel" > '/home/t/.subory/moje_nastavenia/GK.txt'
  else
    echo "Nvidia" > '/home/t/.subory/moje_nastavenia/GK.txt'
fi
                   #caka 5s
                   #ak je device intel spusta xrandr s parametrom vystup eDP1
                   #ak je device nvidia spusta xrandr s parametrom vystup eDP-1
                   #bezi kym sa ntb nevypne alebo kym ho nezabije dalsie spustenie tohto skriptu
while true; do
sleep 5
karta_intel=$(glxinfo | grep -ic "device.*intel")
if [ "$karta_intel" -eq 1 ]; then
  (xrandr --output eDP1 --gamma 0.75:0.75:0.75)
  else
  (xrandr --output eDP-1 --gamma 0.75:0.75:0.75)
fi
done
exit 0
V skratke
Pozrie ake PID ma sam skript s menom gamma0.75
Ak uz bezi proces s takym menom tak ho zabije a necha bezat iba seba(prave spusteneho)
Dalej sa stara o nastavenie gamma(to uz by nemalo byt podstatne)

Ide mi o tu prvu cast s procesmi.
Ak ten skript spustim prvy krat najde procesy
Kód: [Vybrat]
22233 pts/14 00:00:00 gamma0.75.sh
22234 pts/14 00:00:00 gamma0.75.sh
/home/t/.subory/skripty/gamma0.75.sh: riadok 14: kill: (22237) - Tento proces neexistuje
22233 on sam, toto mi zobrazuje aj monitor systemu v sekcii procesy. Toto necha bezat.
22234 uz neviem co by mohlo byt. Toto asi zabije.
22237 no a toto uz neviem vobec co by mohlo byt ked to uz neexistuje. Toto pri killovani zlyha.

Ak ho spustim znova
Kód: [Vybrat]
22233 pts/14 00:00:00 gamma0.75.sh
22412 pts/15 00:00:00 gamma0.75.sh
22413 pts/15 00:00:00 gamma0.75.sh
/home/t/.subory/skripty/gamma0.75.sh: riadok 14: kill: (22416) - Tento proces neexistuje
22233 Je predchadzajuci spusteny skrip. Toto zabije co vidim aj v monitor systemu.
22412 prave spustany skript. Necha bezat, zobrazi v monitor sytemu.
22413 uz neviem co by mohlo byt. Toto asi zabije.
22416 zasa ako pri predchadzajucom. Toto pri killovani zlyha.

V spustani procesov sa vobec nevyznam preto sa chcem opytat co by mohli byt tie procesy co nevidim v monitore systemu a co by mohli byt tie co najde pri vyhladani ale pri killovani uz nebezia. Nieje to nebezpecne ked ich ukoncujem?
Sript inak robi co ma a nevidim s nim ziadny problem.
Ked si necham zobrazit stromovu strukturu spustenych procesov tak pod gamma0.75 mi zobrazuje iba sleep s uplne inym PID ako su tu vypisane.

Pripadne je moja teoria spravna ze to su procesy prikazov ktore spustam v tom skripte? xrandr, echo zapisujuce na disk? Aj ked neviem ci by ich vypisovalo pod nazvom gamma0.75.
« Poslední změna: 14 Září 2016, 23:14:56 od TIBOR »
Asus X751LB-TY014H Ubuntu 16.04 XX 64bit - Mate.
Linus, Lajnas, Línus, Luínus, Lajnus a je mi naozaj jedno, ako ľudia vyslovujú moje meno. Ale "Linux" je vždy "Linux". LINUS TORVALDS, tvorca Linuxového jadra.(V dokumente Revolution OS)

Cuore

  • Závislák
  • ****
  • Příspěvků: 2530
  • Karma: +207/-15
    • Zobrazit profil
Re:Skript/pomoc s vysvetlenim spustanych procesov.
« Odpověď #1 kdy: 15 Září 2016, 07:21:42 »
tak já se přidám, sice jsem to zatím neřešil, ale mám stejnou zkušenost. Hledám obdobně, příklad scriptu cekani.sh
Kód: [Vybrat]
pid=$(ps -e | grep "cekani.sh" | sed 's/^ *//;s/ *$//' | grep -v $$ | cut -d' ' -f1)
 echo "nalezen předchozí proces s PID:"$pid" zabíjím"
kill -9 $pid 2>/dev/null
a najdě vždy jeden neexistující proces, zatím to posílám do 2>/dev/null

GdH

  • Moderátor
  • Závislák
  • *****
  • Příspěvků: 3008
  • Karma: +480/-17
    • Zobrazit profil
    • GdH-Notes
Re:Skript/pomoc s vysvetlenim spustanych procesov.
« Odpověď #2 kdy: 15 Září 2016, 14:41:48 »
Zkusím napovědět  ;)
Kód: [Vybrat]
echo 0. $BASHPID; echo 1. $BASHPID 1>&2 | echo 2. $BASHPID; echo 3. $BASHPID

TIBOR

  • Guru
  • *****
  • Příspěvků: 5774
  • Karma: +429/-20
  • Som uzivatel linuxovej distribucie, som linuxak?
    • Zobrazit profil
Re:Skript/pomoc s vysvetlenim spustanych procesov.
« Odpověď #3 kdy: 15 Září 2016, 16:18:40 »
Pochopil som to spravne ze tie dalsie PID mi vytvara pouzitie rury v subshell? ( | )
http://tldp.org/LDP/abs/html/internalvariables.html
$BASHPID
outside of subshell
inside of subshell
« Poslední změna: 15 Září 2016, 16:21:18 od TIBOR »
Asus X751LB-TY014H Ubuntu 16.04 XX 64bit - Mate.
Linus, Lajnas, Línus, Luínus, Lajnus a je mi naozaj jedno, ako ľudia vyslovujú moje meno. Ale "Linux" je vždy "Linux". LINUS TORVALDS, tvorca Linuxového jadra.(V dokumente Revolution OS)

GdH

  • Moderátor
  • Závislák
  • *****
  • Příspěvků: 3008
  • Karma: +480/-17
    • Zobrazit profil
    • GdH-Notes
Re:Skript/pomoc s vysvetlenim spustanych procesov.
« Odpověď #4 kdy: 15 Září 2016, 16:50:26 »
Ve vašem případě je to ještě průhlednější, vy spouštíte přímo subshell s tím ps, ten samozřejmě běží v novém procesu stejného jména a jeho výstup ukládáte do proměnné, kterou zpracováváte až po jeho smrti. Chtěl jsem ale upozornit, že nové procesy se vytvářejí i před a za rourou. Něco jsem o tom onehdá napsal.

TIBOR

  • Guru
  • *****
  • Příspěvků: 5774
  • Karma: +429/-20
  • Som uzivatel linuxovej distribucie, som linuxak?
    • Zobrazit profil
Re:Skript/pomoc s vysvetlenim spustanych procesov.
« Odpověď #5 kdy: 15 Září 2016, 17:28:01 »
Vdaka.
Asus X751LB-TY014H Ubuntu 16.04 XX 64bit - Mate.
Linus, Lajnas, Línus, Luínus, Lajnus a je mi naozaj jedno, ako ľudia vyslovujú moje meno. Ale "Linux" je vždy "Linux". LINUS TORVALDS, tvorca Linuxového jadra.(V dokumente Revolution OS)

GdH

  • Moderátor
  • Závislák
  • *****
  • Příspěvků: 3008
  • Karma: +480/-17
    • Zobrazit profil
    • GdH-Notes
Re:Skript/pomoc s vysvetlenim spustanych procesov.
« Odpověď #6 kdy: 15 Září 2016, 18:35:07 »
Pokud je skript spouštěn přímo jako spustitelný soubor zadáním cesty k němu a bude se tudíž proces jmenovat po něm, zdá se mi zajímavější killnout všechny ostatní stejného jména třeba takto (pokud jich nebudou desetitisíce):
Kód: [Vybrat]
pgrep "jmeno_procesu" | grep -v $$ | xargs kill -9Přepínačem -f se dá případně záběr pgrep rozšířit na celý příkaz, kterým byl skript spuštěn.

TIBOR

  • Guru
  • *****
  • Příspěvků: 5774
  • Karma: +429/-20
  • Som uzivatel linuxovej distribucie, som linuxak?
    • Zobrazit profil
Re:Skript/pomoc s vysvetlenim spustanych procesov.
« Odpověď #7 kdy: 15 Září 2016, 18:53:26 »
To vyzera sikovne a funguje to.
Asus X751LB-TY014H Ubuntu 16.04 XX 64bit - Mate.
Linus, Lajnas, Línus, Luínus, Lajnus a je mi naozaj jedno, ako ľudia vyslovujú moje meno. Ale "Linux" je vždy "Linux". LINUS TORVALDS, tvorca Linuxového jadra.(V dokumente Revolution OS)