bash - wywoływanie poleceń systemowych z opcjami

Bash, C, C++, Java, PHP, Ruby, GTK, Qt i wiele innych - wszystko tutaj.
Szczech
Sędziwy Jeż
Sędziwy Jeż
Posty: 42
Rejestracja: 03 lis 2007, 11:53
Płeć: Mężczyzna
Wersja Ubuntu: 11.04
Środowisko graficzne: GNOME
Architektura: x86_64

bash - wywoływanie poleceń systemowych z opcjami

Post autor: Szczech »

Jak wpisać do skryptu bash-a polecenie systemowe, które zawiera opcje wywołania + dodatkowe grep? Np.:

Kod: Zaznacz cały

#!/bin/bash

x=ps -aux|grep /bin/bash ./skryptA
kill -s KILL x

while [ 1 = 1 ]
do
	sleep 1
done
Czy w ogóle to przypisanie do zmiennej 'x' jest poprawne?

Generalnie program ma zabijać proces ./skryptA. Najpierw poleceniem ps próbuję uzyskać PID procesu, a następnie zabić ten proces stosując pozyskany numer PID.
Awatar użytkownika
Dwimenor
Przebojowy Jelonek
Przebojowy Jelonek
Posty: 1260
Rejestracja: 18 mar 2008, 16:14
Płeć: Mężczyzna
Wersja Ubuntu: 13.10
Architektura: x86_64

Odp: bash - wywoływanie poleceń systemowych z opcjami

Post autor: Dwimenor »

x=`polecenie`

znaki `` to te na klawiszu tyldy. Taka konstrukcja powoduje, że w miejscu gdzie jest zastosowana zostanie wstawiony wynik polecenia pomiędzy ``. W tym wypadku zostanie przypisane do zmiennej x
Poniższe zdanie jest fałszywe.
Powyższe zdanie jest prawdziwe.
Szczech
Sędziwy Jeż
Sędziwy Jeż
Posty: 42
Rejestracja: 03 lis 2007, 11:53
Płeć: Mężczyzna
Wersja Ubuntu: 11.04
Środowisko graficzne: GNOME
Architektura: x86_64

Odp: bash - wywoływanie poleceń systemowych z opcjami

Post autor: Szczech »

Jednak się trochę przeliczyłem z tą zmienną x. Chodzi o to, żeby przypisać jej PID procesu skryptA. Problem w tym, że polecenie

Kod: Zaznacz cały

ps -aux|grep /bin/bash ./skryptA
wyświetlało tylko PID ostatniego procesu o nazwie skryptA? A dokładniej /bin/bash ./skryptA? Może jest jakiś prostszy sposób na pozyskanie tego identyfikatora.

Może dodam jeszcze ogólnie, że zadanie polega na tym, żeby skrypt A wywołał skrypt potomny B, a następnie skrypt B zabił swojego rodzica.
dawidgarus
Wytworny Kaczor
Wytworny Kaczor
Posty: 418
Rejestracja: 09 lut 2007, 23:17
Płeć: Mężczyzna
Wersja Ubuntu: 9.10
Środowisko graficzne: GNOME
Architektura: x86
Kontakt:

Odp: bash - wywoływanie poleceń systemowych z opcjami

Post autor: dawidgarus »

sprawdź polecenia pkill, pgrep, pidof
w ogóle czemu ma służyć:

Kod: Zaznacz cały

while [ 1 = 1 ]
do
	sleep 1
done
?!
Awatar użytkownika
beluosus
Zakręcona Traszka
Zakręcona Traszka
Posty: 695
Rejestracja: 01 paź 2006, 15:32
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: Xfce
Architektura: x86
Kontakt:

Odp: bash - wywoływanie poleceń systemowych z opcjami

Post autor: beluosus »

Można tak:

skr.sh

Kod: Zaznacz cały

#!/bin/bash

./skr2.sh &

while [ 1 ]; do
	echo "(PID = $$) skrypt 1..."
	sleep 1
done
skr2.sh

Kod: Zaznacz cały

#!/bin/bash

echo 'Za 4.5s zabije rodzica...'
sleep 4.5
skill -KILL $(ps -l | grep -w $$ | awk '{if (NR==1) print $5}')
echo 'Zabilem!'
Kurs Linuksa: for i in $(ls /bin); do man $i; done
__________________
http://beluosus.pl/
ODPOWIEDZ

Wróć do „Programowanie”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 1 gość