Nem tudom megcsinálni

sziasztok
Nem megy nekem ez a feladat. És kérném a véleményeteket a megoldásokhoz. Elölre is kösz mindenkinek aki segít nekem.
Írja át a login script-jét úgy, hogy bejelentkezéskor kiírja, hányan dolgoznak a gépen Hány user futtat valamilyen a shell-től eltérő processz-t?

Hozzászólások

Ez amolyan prog.körny. szagú :) A w(1) parancs outputját nézd meg, ha nem feltétel a minden határon túli hordozhatóság.

>> hányan dolgoznak a gépen
who | wc -l

>> Hány user futtat valamilyen a shell-től eltérő processz-t?

ps -ef vagy ps aux és wc -l -lel számold meg azokat a sorokat, ahol nincs a bash szó.

Legalábbis szerintem. :)

BTW: ha ilyen gondod van:
1) google : valószínű, hogy már valaki megoldotta ezt a kérdést vagy nagyon hasonlót
2) nyiss inkább egy fórumtémát, mert ott hamarabb kapsz segítséget

biztos informatikaval akarsz foglalkozni?

a kerdesre a valasz egy kis jartassagot igenyel, ami hasonlo a lexikalis tudashoz: seggel megszerezheto.
Az informatikaval foglalkozas kepessege ennek a tudasnak az ido szerinti elso derivaltja (mennyit kell seggelni, hogy ez a "jartassag" meglegyen). Mint ilyen, a jartassag 0 mivoltja semmilyen modon nem utal az informatikai kepessegre. Ezt neked illene tudni. Regebben tanitottalak teged cca ket orat, (0-rol epszilonra) nem zavart, hogy indulaskent egyetlen kerdesednek sem volt ertelme, es orultem, mikor fel ora mulva mar ertelmes kerdeseid id voltak. Kerlek, legyel masokhoz turelemmel.

tudom, emlekszem. de ez nem turelem kerdese. felev vege van, jon a progtech beadando (ezt meg Neked kellene tudni, vagy mar nem csinalod a targynak a reszet?), es ahelyett, hogy megoldana, megkerdezi itt a megoldast.

tobb lehetoseg van:
- tenyleg bent ult, vegigszenvedte az egeszet, de valami hibadzik, ez a legjobb eset
- nem ult bent, guglizni is lusta, gyorsabb megkerdezni

en azt szoktam mondani a diakjaimnak (mert igen, mar masfel eve boldogitom szegeny hallgatosagot), hogy ha kerdes van, irjanak nekem, biztos, hogy segiteni fogok. tudod milyen kevesen elnek ezzel? pedig nem harapok, sot, orulok, ha erdekli oket a targy.

ezerszer volt mar de kerdes es kerdes kozott kulonbseg van. Es nem ugy ertem hogy valaki marhasagot kerdez mert fals informacioi vannak - nincs meg az altalad emlitett lexikalis tudas, mert azzal semmi baj nincs. Ha azt kerdezne, hogy "ezt meg ezt akarom csinalni lehet e ezt egyaltalan igy" vagy "mi a parancs/eszkoz arra hogy ..." valoszinuleg mindenki sokkal segitokeszebb lenne. Amit irt az nem kerdes hanem feladat es mint olyan nem csak a tudas hianyanak hanem a hibas hozzaallasnak a jele.
==
`Have some wine,' the March Hare said in an encouraging tone.
Alice looked all round the table, but there was nothing on it but tea.

regen a hittan tanitasanal az volt a regula, hogy buktatni csak kiveteles, puspoki engedellyel szabad, hiszen nem az a cel, hogy megtanulja, hanem hogy megszeresse.

informatika tanitasi palyafutasom alatt kialakult az a meggyozodes bennem, hogy az informatika, mind a rendszergazdasaghoz, mind pedig a programozashoz szukseges kepessegek es tudasok megtanulhatatlanok. Nem nagyjabol, vagy tobbsegeben, hanem teljes egeszeben. Egyik apro resze sem tanulhato. Mindegyik olyan skill, amit a user eleve hordoz, vagy nem hordoz.
Ennel fogva, a helyes tanitas segiteni a usert mindenben, legfokeppen hogy kedve teljek, mert ha megvan benne a kockulas kepessege, az igy fog elojonni. Ha nincs meg benne a kockulas, akkor mindegy mit mondasz neki, az elso programjanak elso soranal el fog verezni. Ez nem hozzaallas es nem szorgalom vagy lekiismeret kepessege, hanem a rendszerezo algoritmukus gondolkodas meglete, vagy meg nem lete.

Egyetértek veled, de van egy kiegészítésem is.
Ha már eltelt a félévből 2 hónap, és a kérdező még nem vette a fáradtságot, hogy egy kicsit olvasson a dologról, akkor az érdeklődés teljes hiányáról beszélhetünk. Amit legtöbbször nem lehet gyógyítani oktatói türelemmel. Típikusan az a helyzett, hogy a pácienst egyáltalán nem érdekli a dolog, és úgy gondolja, megint egy teljesen felesleges tantárgyat vett fel. Tervei szerint a beadandó feladat beadása előtt, vagy a ZH írás előtt néhány nap alatt majd gyorsan bemagolja. A konkrét esetben legtöbb shell-lel foglalkozó leírás az első 10--20 oldalon általában megemlíti a who vagy a w parancsot, illetve wc-t is.
Ha már ennyit tudna, akkor már konkrét kérdést tudott volna feltenni, az "oldjátok meg helyettem" kérés helyett.

-----
Innen most töltsünk tiszta vizet a nyílt kártyákba: ...

ez kiirja, hogy hanyan es honnan vannak benn, es ki mit csinal:

w

ez meg egy pipe jel, ami azt teszi, hogy az elotte levo parancskimenetet egy csatornaba (pipe) teszi, es a mogotte levo parancs bemeneteul adja. A unix shell programozas lenyege es fenegyereke, nincs magyarazat, szokd meg:

|

ez meg a bemeneti szoveg elso ket sorat elhagyja, es a veget adja tovabb:

tail --lines=+3

tehat az alabbi parancssor hasonlo, mint a

w

kimenete, de nincs benne az elso ket sor (a header)

w | tail --lines=+3

ebbol most el kellene hagyni mindent, ami "bash", de nem azt, eki usernek a neve bash. Az alabbi parancs kilistazza az osszes sort, aminek a vegen van a "bash":

grep ' bash$'

ha a grep-hez hozzafuzunk egy

-v

kapcsolot, akkor az osszes olyat listazza ki, aminek nem "bash" a vege. Ha igy osszerakjuk a parancssort:

w | tail --lines=+3|grep -v ' bash$'

Ez egy felhasznalot tobbszor is mutat, hiszen lehet, hogy egy felhasznalo tobbszor is bejelentkezett, es tobb mindent csinal. A feladat kiirasa szerint a felhasznalokat kell osszeszamolni, nem a processzeket. Nosza, vagjuk ki a felhasznalokat, rendezzuk, es a multiplicitast dobjuk el (uniq rendezes)
A felhasznalok kivagasa:

awk '{print $1}'

a tobbszorosek eltuntetese:

sort -u

igy az osszerakott parancssor:

w | tail --lines=+3 | grep -v 'bash$' | awk '{print $1}' | sort -u 

Nos, a vegen mar csak meg kell szamolni azt, hogy ez hany sor

wc -l

Igy az osszerakott parancssor, ami a kivant szamot irja ki:

w | tail --lines=+3 | grep -v ' bash$' | awk '{print $1}' | sort -u | wc -l 

A feladatnak sok mas megoldasa is van (csak awk -val peldaul) es esetleg mas ertelmezese (ket szamot kell kiirni, nam egyet; multipilicitast is kell szamolni; nem csak a "bash" -ra kell figyelni, stb. Mindegy, a feladat es a megoldas alkalmas a unix parancsori munka legfontosabb elemeinek bemutatasara:
- adatlekerdezo parancs
- sok szovegmanipulacios onmagaban egyszeru cucc
- helyesen osszerakva a kivant eredmeny

1.) w -h

Ehhez javaslom meg a -w kapcsolot is, ami 8 karakternel hosszabb userneveket is teljesen kiir...

2.) grep VAGY awk VAGY sed, ha mar ilyen 1x1 kategoriaban is hajlandoak vagytok segiteni...

3.) portability (tail --my_ass)


w -wh | awk '! /-bash/ {print $1}'

AIX-en a bash '-bash' -kent jelenik meg

Néhány észrevétel:
w -wh: a -w pl. Ubuntu Karmic alatt nincs.
Filozófiai jellegű: Ha például Gnome alatt indítok egy terminált, és abban adom ki a parancsot, akkor az két sort eredményez a w -h kimenetében. Akkor ez most egy, vagy kettő?
Szeretem az awk-ot, de itt most ágyúval verébre akciónak tűnik.
Egy másik megoldási javaslat:
w -h | cut -d\ -f1 | uniq | wc -l

(A -f1 előtt két szóköz van!)

-----
Innen most töltsünk tiszta vizet a nyílt kártyákba: ...

Öhh... a fenti feladat tán olyan, amit nem tanítanak, vagy nincs leírva sehol ugyanez pepitában? Kétlem... tehát nem megoldhatatlan a feladat, úgyhogy javaslom: ugorj neki a tanulásnak, ha már egyszer ráléptél a diplomád felé vezető útra...

-------------------------
Trust is a weakness...