Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Hej 
Potrzebuje poćwiczyć pisanie skryptów w bashu i jeśli macie jakieś do napisanie to chętnie się podejmę. Proszę o wrzucanie w tym wątku.
Offline

 Użytkownik
	

To ja mam coś dla Ciebie. Zbieram i archiwizuje zdjęcia cyfrowe w zasadzie od ... 2003 roku. Poumieszczałem  to wszystko ładnie w katalogach które opisałem najczęściej tak:
rrrr-mm-dd + jakiś tam opis. 
Niestety samych zdjęć było sporo i nie zmieniałem nazw plików. Zależy mi na tym aby zrobić skrypt który po odpaleniu w danym katalogu pozmieniał by mi nazwy wszystkich plików znajdujących się w tym katalogu i jego podkatalogach na nazwę nadrzędnego folderu + nr (najlepiej 4 cyfrowy np. 0001,0002 itd. ).
Jak byś to ogarnął był bym wdzięczny :D
Offline
Możesz podrzucić ls z przykładowego folderu?
Offline

 Użytkownik
	

Mógłbyś napisać skrypt który wyszukiwałby program który najbardziej obciąża procesor, na podstawie podanych zmiennych- wartości zużycia CPU od na przykład 80 - do 100% (czasami jakis program się zawiesi i zużywa cały procesor) i pytałby się użytkownika czy ma go automatycznie zakończyć?
Offline







 Podobno człowiek...;)
	







macios4x napisał(-a):
Mógłbyś napisać skrypt który wyszukiwałby program który najbardziej obciąża procesor, na podstawie podanych zmiennych- wartości zużycia CPU od na przykład 80 - do 100% (czasami jakis program się zawiesi i zużywa cały procesor) i pytałby się użytkownika czy ma go automatycznie zakończyć?
Cgroup do ograniczania procesów, TOP/HTOP do wyświetlania danych o procesach, wszystko jest, trzeba tylko skonfigurować conieco.
SOA#1
Ostatnio edytowany przez Jacekalex (2015-08-01 13:09:46)
Offline
Bitels napisał(-a):
To ja mam coś dla Ciebie. Zbieram i archiwizuje zdjęcia cyfrowe w zasadzie od ... 2003 roku. Poumieszczałem to wszystko ładnie w katalogach które opisałem najczęściej tak:
rrrr-mm-dd + jakiś tam opis.
Niestety samych zdjęć było sporo i nie zmieniałem nazw plików. Zależy mi na tym aby zrobić skrypt który po odpaleniu w danym katalogu pozmieniał by mi nazwy wszystkich plików znajdujących się w tym katalogu i jego podkatalogach na nazwę nadrzędnego folderu + nr (najlepiej 4 cyfrowy np. 0001,0002 itd. ).
Jak byś to ogarnął był bym wdzięczny :D
Hej 
Poniżej wersja testowa zmienia tak jak chciałeś tylko brak jeszcze numeru 4 cyfrowego ( obecnie wstawia tylko numerek). Proszę o przetestowanie na jakiejś kopi danych.
#/bin/bash
aa=`pwd`
bb=0
mkdir $aa"/pomoc12"
for i in `find ./ -type d ! -path ./pomoc12`;
do 
((bb++))
if [ $i != "./" ]; then
find $i -maxdepth 1 -type f>$aa"/pomoc12/a"$bb
b=`find $i -maxdepth 1 -type f|wc -l`
for ((g=1; $g<=$b ;g++));
do 
ww=`cat $aa"/pomoc12/a"$bb |tail -n $g| head -n 1`
na=`echo $i |awk -F "/" '{print $NF}'`
mv $ww $i"/"$na$g
done
fi
doneW razie pytań pisz.
Skrypt stworzy sobie kakalog pomoc12 gdzie będą pliki pomocnicze (lista plików w danym katalogu).
Ostatnio edytowany przez pabliszer (2015-08-01 14:53:04)
Offline

 Użytkownik
	

@pabliszer
mógłbyś napisać ten skrypt o który prosiłem?
Offline

 Użytkownik
	

dzięki sprawdzę jak złapię chwilę wolnego
Offline
macios4x napisał(-a):
@pabliszer
mógłbyś napisać ten skrypt o który prosiłem?
Mogę napisać tylko z czego chcesz pobierać obciążenie oraz jaki ma być czas w którym to obciążenie jest w granicach 80-100%?
Offline

 Użytkownik
	

pabliszer napisał(-a):
macios4x napisał(-a):
@pabliszer
mógłbyś napisać ten skrypt o który prosiłem?Mogę napisać tylko z czego chcesz pobierać obciążenie oraz jaki ma być czas w którym to obciążenie jest w granicach 80-100%?
Chodzi mi o skrypt który wyświetlałby menu do wyboru zniszczć proces który:
- najbardziej obciąża procesor (na przykład obciążenie utrzymuje się przez conajmniej 60 sekund)
- zabiera najwięcej pamięci RAM
- wyszukuje i niszczy procesy "zombie"
Offline



 Użytkownik
	a jak chcesz zniszczyć proces zombie? ot tak z ciekawości pytam bo może coś wiesz czego ja nie wiem... ;)
Offline







 Podobno człowiek...;)
	







Zombie generalnie  się niszczy przez zabicie rodzica procesu, innej drogi nie ma na razie, a ta też jest zależna od systemu i nie zawsze działa.
Trzeba by chyba jakąś łatkę na kernel, żeby automatycznie ubijał sam proces zombie, ale to dosyć złożony problem, i raczej nie w Bashu.
To już by była zabawa na poziomie podobnym do Grsec&Pax.
Skryptologicznie to można się bawić tak (głównie komentarze):
http://www.cyberciti.biz/tips/killing-zombie-process.html
ale skuteczność takich zabaw jest dosyć umiarkowana. :P
Ostatnio edytowany przez Jacekalex (2015-08-02 14:31:07)
Offline

 Użytkownik
	

Z tego można coś "skręcić":
ps -eo pcpu,cmd | sort -k 1 -nr | head -n 1
ps -eo pmem,cmd | sort -k 1 -nr | head -n 1
ps aux | awk '{ print $8 " " $2 }' | grep -w Zchyba że znacie jakiś lepszy sposób?
Offline







 Podobno człowiek...;)
	







macios4x napisał(-a):
Z tego można coś "skręcić":
Kod:
ps -eo pcpu,cmd | sort -k 1 -nr | head -n 1 ps -eo pmem,cmd | sort -k 1 -nr | head -n 1 ps aux | awk '{ print $8 " " $2 }' | grep -w Zchyba że znacie jakiś lepszy sposób?
ps -eo pcpu,cmd | sort -k 1 -nr | head -n 1
Cgroup::Cpu i też trochę Cgroup::Cpuset
ps -eo pmem,cmd | sort -k 1 -nr | head -n 1
Cgroup::Memory
To są te "lepsze sposoby".
Sznurek: https://wiki.archlinux.org/index.php/Cgroups
Offline

 Użytkownik
	

Mozna przetestować zombiaka:
(: & exec sleep 30) &
lub bardziej hardkorowo:
:(){ :|:&};:Offline







 Podobno człowiek...;)
	







Forkbomba z procesami zombie ma niezbyt wiele wspólnego.
Sznurek:
https://pl.wikipedia.org/wiki/Fork-bomba
Offline



 Użytkownik
	chwila moment... zombiak to proces który nie istnieje i raczej trudno zastrzelić nieboszczyka. i nie ma sensu jego ubijanie, jeśli jest to tylko wpis do tablicy procesów.
btw. zombiaki się ubija przez wait czy waitpid na parencie, a nie przez ubicie patenta. mam parę aplikacji, które pozostawiają zombie na parę sekund  (max. dwie minuty) bo akurat robią coś ważniejszego niż wait...
zresztą - od młodych wiele nie wymagam, ale kol. @jacekalex mógłby uprzejmie przestać pieprzyć - wiele osób na tym forum uważa, że coś wiesz, i przykro by było uświadomić im prawdę...
Offline







 Podobno człowiek...;)
	







Jak już chcesz personalnie, to sam widziałem parę zombiaków, których nie dało się ubić w żaden sposób, nie mniej kiedyś skutkowało ubicie parenta.
Ostatnio dawno takiego dziadostwa nie widziałem, i zastanawiam się, cóż to za system, w którym są takie problemy z zombiakami, radziłbym go zaorać, i postawić jakiś normalny, np Debiana.
A jak umiesz wysłać sygnał wait lub waitpid na parencie, który już nie działa, to weź to szybko opatentuj, bo Developerzy Kernela jeszcze tego sposobu nie wdrożyli. 
Pozdro
Offline




 Pan inż. Cyc
	




pabliszer napisał(-a):
...
Skrypt stworzy sobie kakalog pomoc12 gdzie będą pliki pomocnicze (lista plików w danym katalogu).
Od tego jest /tmp
Offline



 Użytkownik
	@jacekalex - nie zrozumieliśmy się trochę.
chodzi o to, że ubicie parenta to coś jak amputacja ręki w przypadku złamanego paznokcia. owszem - rodzic powinien wywołać wait jeśli zrobił forka, ale czasem ma coś innego do zrobienia i wait wywoła w przerwie na kawę. poza tym ubicie parenta wcale nie powoduje ubicia zombiaka  - po prostu w takiej sytuacji rolę parenta przejmuje init, a ten faktycznie nie ma nic lepszego do roboty oprócz wajtowania :)
A i tak zombiaka ubić się nie da bo kill działa wyłącznie na żywe procesy.
stąd pomysł usuwania zombie jest mocno chybiony i to trzeba by było pomysłodawcy wyjaśnić.
Offline







 Podobno człowiek...;)
	







ethanak napisał(-a):
@jacekalex - nie zrozumieliśmy się trochę.
chodzi o to, że ubicie parenta to coś jak amputacja ręki w przypadku złamanego paznokcia. owszem - rodzic powinien wywołać wait jeśli zrobił forka, ale czasem ma coś innego do zrobienia i wait wywoła w przerwie na kawę. poza tym ubicie parenta wcale nie powoduje ubicia zombiaka - po prostu w takiej sytuacji rolę parenta przejmuje init, a ten faktycznie nie ma nic lepszego do roboty oprócz wajtowania :)
A i tak zombiaka ubić się nie da bo kill działa wyłącznie na żywe procesy.
stąd pomysł usuwania zombie jest mocno chybiony i to trzeba by było pomysłodawcy wyjaśnić.
Pewnie, żeśmy się nie zrozumieli.
Czasem zombiak powstaje z powodu kłopotu w komunikacji z parentem albo jego chwilowym działaniem, i po chwili znika.
To może jest z 85% wszystkich zombiaków, może nawet więcej, ale nie wszystkie.
Ja raz na Gentusiu kompilowanym gcc-4.5 miałem  jazdę z programikiem gnome-sesion, który po jakiejś aktualizacji po uruchomieniu stawał się sam czymś podobnym do zombiaka, tylko ze potrzebował cały wolny ram i cały rdzeń procka, a ubić go się nie dało niczym.
Podejrzewam, że trochę kolizji z bibliotekami systemowymi i podobnych baboli też się określa i kwalifikuje jako zombie, choć geneza powstania takiego potwora jest diametralnie różna.
Jak zwykle w takiej sytuacji jest kolizja miedzy określeniem potocznym a definicją i to tutaj widzę, nić innego.
Co prawda rekord świata na Gentusiu, to był kernel panic po włączeniu Xorga przez 'startx|xinit' podczas, gdy KDM  go podnosił prawidłowo,
 do dzisiaj nie wiem, dlaczego, w każdym razie ten problem występował u mnie na systemie z włączonym SELINUXEM w trybie targeted i standardowo Grsec&Pax.
W każdym razie podejrzewam, że widziałem trochę więcej "cudacznych" przyczyn anomalii w działaniu programów (czasem powodujących status zombie programu, ale przy różnorakich innych okolicznościach), których w standardowym Ubuntu czy Debianie nie da się zobaczyć, bo takich spraw pilnują Developerzy.
Nie ma jednej możliwej przyczyny anomalii w działaniu programów, i tor postępowania też może być różny w zależności od przyczyny anomalii, nawet, jak jej ktoś nie dał rady zdiagnozować przez debugger.
Pozdro
Ostatnio edytowany przez Jacekalex (2015-08-03 20:30:15)
Offline
qluk napisał(-a):
pabliszer napisał(-a):
...
Skrypt stworzy sobie kakalog pomoc12 gdzie będą pliki pomocnicze (lista plików w danym katalogu).Od tego jest /tmp
Ścieżkę zawsze można zmienić ( przy pisaniu wygodniej mi było tu gdzie stworzyłem :-) )
Offline



 mega boss
	



To ci się przyda http://algorytmy.pl/?d=linux
Offline




 Pan inż. Cyc
	




pabliszer napisał(-a):
qluk napisał(-a):
pabliszer napisał(-a):
...
Skrypt stworzy sobie kakalog pomoc12 gdzie będą pliki pomocnicze (lista plików w danym katalogu).Od tego jest /tmp
Ścieżkę zawsze można zmienić ( przy pisaniu wygodniej mi było tu gdzie stworzyłem :-) )
Uczysz się złych nawyków w ten sposób, rób od razu tak jak powinno, a wejdzie samo w krew i nie trzeba będzie potem dwa dni czyscić kodu. ;)
Offline

 Użytkownik
	

Jest jakiś sposób aby w BASHu zrobić tzw. "podfunkcję"? Na przykład daję jakiś warunek if coś tam..., i jakikolwiek byłby wynik (czy warunek by się spełnił lub nie) to żeby skrypt wykonał kolejną czynność (też funkcję if - jeśli warunek tak- to funkcja if coś tam 1; a jeśli nie- to funkcja if coś tam 2).
Offline