Strona 1 z 1

Bash - nazwa skryptu

: 26 kwietnia 2009, 16:56
autor: ksysinek
Witam. Napisałem sobie prosty skrypt, który jednak dość często wywołuję. Zdarza się, że jednocześnie uruchomionych jest kilka takich skryptów. Czasami jednak potrzebuję zabić któregoś. Jednak gdy uruchomię na serwerze, wszystkie skrypty maja nazwę ,,mojskrypt.sh''.

Pytanie moje brzmi, co muszę zrobić, aby w top, moje skrypty przybrały nazwę Alfa, Beta, Gamma? Dla ułatwienia powiem, że skrypt wywoływany jest z parametrami, i wystarczy mi, że nazwa będzie $1

: 26 kwietnia 2009, 17:51
autor: ponton
To nie lepiej podzielić ten skrypt na kilka skryptów?

Nie wiem, jak to w Bashu zrobić, ale jest wywołanie systemowe prctl, które może zmienić nazwę procesu: http://manpages.courier-mta.org/htmlman2/prctl.2.html

: 26 kwietnia 2009, 19:12
autor: ksysinek
Nie mogę go podzielić. Jest wywoływany przez eggdropa który siedzi na IRCu. Dla określonego tekstu robi zawsze to samo. Wywoływany jest właśnie z parametrem "text" Chciałbym, żeby w top nie było mojskrypt.sh tylko text właśnie

: 28 kwietnia 2009, 16:38
autor: Ister
Użyj

Kod: Zaznacz cały

ps ax
zamiast top do znalezienia pida skryptu. Tam masz podane z parametrami.

: 28 kwietnia 2009, 21:45
autor: ksysinek
Ehh, nie lubię półśrodków ale ten niestety pozwala mi zobaczyć który proces jest od czego. Dzięki

: 29 kwietnia 2009, 09:02
autor: Ister

Kod: Zaznacz cały

man top
podpowiada, żeby użyć

Kod: Zaznacz cały

top c
O to chodziło?

: 29 kwietnia 2009, 09:45
autor: ksysinek
Ister to też pomaga ale czasami komenda, którą wykonuje skrypt jest zbyt długa, żeby zmieścić się na ekranie. Gdybym umiał zmienić nazwę skryptu wyświetlaną w top, wszystko byłoby dobrze.

: 29 kwietnia 2009, 10:09
autor: Ister
Będąc w top możesz przy pomocy ,,f'' usunąć niepotrzebne Ci informacje. O ile takie są oczywiście. Wtedy będzie większa część komendy wyświetlona.

Jedyny pomysł jak możesz to zrobić dokładnie tak jak chcesz jest następujący (uwaga - długie i dookoła, ale nic mądrzejszego nie przychodzi mi do głowy).
Skrypt, który uruchamiasz stanowi wzorzec. Tworzysz skrypt do uruchamiania skryptu, który:
  1. Sprawdza jaki aktualnie jest najwyższy uruchomiony skrypt (albo najniższy wolny, ale to więcej zabawy).
  2. Kopiuje główny skrypt pod nową nazwą (np. 1skrypt, 2skrypt itd.).
  3. Uruchamia skopiowaną wersję w tle.
  4. Odłącza uruchomiony przez siebie skrypt.
  5. Kończy działanie.
Z kolei główny skrypt powinien działać w taki sposób, że z chwilą zakończenia kasuje swoje pliki uruchomieniowe.

Na chwilę obecną nic mądrzejszego mi do głowy nie przychodzi.

Ewentualnie możesz pobawić się i zmodyfikować ,,top'' (oczywiście na poziomie kodu źródłowego) tak, żeby można było przełączyć go w tryb wyświetlania, w którym ,,pid+komenda'' byłyby w jednej linii, a pozostałe dane w następnej. Ale to jest jeszcze więcej roboty.