» »

Pomoč pri ukazih v linuxu

Pomoč pri ukazih v linuxu

kokpa ::

Pozdravljeni!

Mi lahko pomagate z domačo nalogo, čeprav sem pregledal vso snov katero smo vzeli na faksu, ne znam narediti nekaj banalnih primerov. Sj nekatere primere smo delali na vajah tiste osnovne, no tele pa so za mene že španska vas.

1. Napišite program v lupini, ki v trenutnem direktoriju preimenuje datoteke s podano končnico v drugo končnico. Končnici sta podani v ukazni vrstici.
Primer uporabe:
$ preimenuj txt doc
bo preimenoval:
aaa.txt v aaa.doc
Juhutxt v Juhudoc
* pri reševanju si lahko pomagate tudi z ukazoma sed ali awk.

2. Napišite program v lupini, ki vsakih pet minut preveri, če se na sistemu pojavi nek proces in ga poskusa ubiti. Ime procesa podamo v ukazni vrstici.
Primer uporabe:
$ ubij firefox
bo na računalniku vsakih pet minut preveril, če teče kak proces z imenom firefox, ter ga bo poskušal ubiti. Navodilo: pri tem obvezno uporabite ukaz kill.

3. Napišite program v lupini, ki preišče vse datoteke v podanem direktoriju in njegovih poddirektorijih in izpiše najnovejšo datoteko (po datumu zadnje spremembe).
Primer izpisa:
$ najnovejsa /usr/etc
/usr/etc/httpd/httpd Oct 25 12:16

4. V lupini bash napišite program izpisi.sh, ki v danem direktoriju in rekurzivno v vseh poddirektorijih izpiše imena vseh datotek, ki so daljša od dane dolžine. Prvi argument programa naj bo dolžina v byte-ih, drugi pa ime direktorija.

lep pozdrav in hvala za vsako pomoč.

Poldi112 ::

Spet moram biti siten, ampak načeloma na tem forumu domačih nalog ne rešujemo. Z veseljem pa pomagamo, če se ti kje zatakne. Samo moraš tudi nekaj sam narediti, da se vidi da migaš.
Where all think alike, no one thinks very much.
Walter Lippmann, leta 1922, o predpogoju za demokracijo.

kokpa ::

razumem kaj mi hočeš povedati. No lotil sem se 2 naloge ubijanja procesov. Ne vem kako naj najprej preverim če ta proces sploh lavfa, ubijem ga z ukazom pkill paimeprocesa in nato še sleep 5min, ampak po tem mora iti znova preverjat, in ubijat in to ponavljat vsakih 5min.

pkill gedit; sleep 5min

za prvo naloga pa znam spremeniti samo posebaj, npr. naredim datoteko touch dn1.txt, zdaj pa ji spremenim končnico, mv dn1.txt dn1.doc. Rad pa bi spremenil končnico vseh datotek v trenutnem direktoriju.

Zgodovina sprememb…

  • spremenil: kokpa ()

brodul ::

Pomoje je avtor mislil da ne smeš uporabljati pkill ampak kill.

enih par hintov:
Glede ubijanja
man kill

pid dobiš lahko z ukazom pidof
pidof firefox


Glede funkcij z parametri
http://tldp.org/HOWTO/Bash-Prog-Intro-H...

man sed; man awk 

pa malo pogooglaj
http://tldp.org/HOWTO/Bash-Prog-Intro-H...

Glede velikosti datotek pa napiši
du .

kaj se zgodi?
man du


Preverjanje na pet minut lahko narediš tako da daš vse v while 1 zanko in sleep 5m nakam not.

Pa vzemi si 30 min časa pa preberi http://tldp.org/HOWTO/Bash-Prog-Intro-H... .
Pretending to be a mature adult is so exhausting.

kokpa ::

glede kill-a, ja res je videti da hočejo da uporabimo kill, ampak s killom ne moreš potem navesti imena programa, ampak lahko samo njehov pid, v navodilh pa piše naj ga ubijemo po imenu $ ubij firefox. Pa še tole kako naj jaz napišem program v lupini? Programe pri vajah smo pisali v gedit-u, ne razumem kako naj povežem daljše ukaze oziroma kako naj zraven kuaza vključim pogojne stavke.

mte ::

Mišljeno je, da napišeš fajl v tekstovnem editorju (gedit, vim, ...), to vidiš iz primerov izpisov.

za kill bi rekel recimo nekaj takega:

ps ax | grep firefox | kill $(awk '{print $1}')

oz. če napišeš program v datoteki, katerega kličeš z argumentom, zamenjaš besedo firefox z $1 , kar pomeni prvi argument, s katerim je bil klican program.

lp

Zgodovina sprememb…

  • spremenil: mte ()

brodul ::

Če hočeš pisati programe v gedit.

Moraš programe začeti z
#! /bin/bash

Program shraniš kot ubij .
Potem dovoliš programu, da se lahko izvaja.
 chmod u+x ubij


Zaženeš ga pa z
./ubij <prvi parameter>


Če napišeš:
./ubij firefox


Se ti bo firefox shranil v spremenjlivko 1, ki jo lahko kličeš z $1.

#! /bin/bash
kill $(pidof $1)


Tak program ti bo ubil firefox oz. program ki bo prvi parameter.

#! /bin/bash

while true
do
kill $(pidof $1) &> /dev/null
sleep 3
done


No da razložim tale program.

#! vrstica // pove kdo naj to interpretira, pri nas je to bash
while true ; do // Dokler je to res delaj kar je pred done. (to je vedno res)
kill $(pidof $1) &> /dev/null // Dobi prarameter $1 nato se izvede tisto kar je v oklepaju (dobi pid od procesa firefox), potem se izvede kill za njem pa se sedaj nahaja pid od procesa firefox (ali pa katerega drugega karkoli že daš za prvi parameter)
&> /dev/null // redirecta vse napake v nič. To je zato da se program ne pizdi, če firefox ne lavfa.
sleep 3 // čaka 3 sekunde ti moraš dati 5m
done // konec while

tole je pa program ki ga hočeš. Shrani ga kot ubij. In ga chmodaj kot sem napisal.
Namesto sleep 3 napiši sleep 5m .
Pretending to be a mature adult is so exhausting.

kokpa ::

brodul hvala, za tvojo pomoč mankal mi je samo še tale pidof, oziroma kako shraniti pid procesa in ga nato ubiti.

kokpa ::

mi lahko pomagate še za ostali dve nalogi 3 in 4. Pri 3 sem ugotovu da morem uporab ukaz find in ~ , nato bi moral iskati najnovejše, find ma neko možnost s time, ampak jaz morem najti najnovejšo in jo še potem izpisati, to pa ne znam.
Pri 4 pa isto uporabim find ~, čeprav ne vem če je pravilna ta pot(danem direktoriju in vseh rekurzivnih poddirektorijih). uporabit moram še size, ki naj bi bil kot prvi argument v bytih, drugi pa ime direktorija, za katerega pa nimam ideja kaj naj bi to pomeniloi in seveda vse izpisati katere so daljše od dane dolžine.

kokpa ::

mi lahko nekdo pove če lahko uporabim argumete v findu, recimo takole, jst zaženem program ./izpisi. sh 1000 faks, to sta dva argumenta velikost in ime direktorija. Zdaj pa ju bi rad jaz našel z find.
find ~ -size +1000k | find ~ -name 'faks', namesto 1000 bi rad dal argument velikost in namesto faks bi rad imel argument ime direktorija. Prosim za pomoč :'(

brodul ::

find <neki tuki> -size <neki tuki> 


tole moraš dat v funkcijo

pa neki tuki zamenjat z pravimi stvarmi

man find


Naučite se brati manuale, vse piše not.
Po njih iščete tako da pritisnite
/<iskana beseda> Enter

n za next
Pretending to be a mature adult is so exhausting.


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[bash] Sortiranje fotografij po datumu

Oddelek: Programiranje
101377 (938) Mike0
»

[C] in delo s procesi v Linuxu

Oddelek: Programiranje
132174 (1660) OmegaM
»

Bash izpis datotek

Oddelek: Programiranje
111391 (1213) BigWhale
»

linux BASH programiranje

Oddelek: Operacijski sistemi
91649 (1496) 64202
»

Linux skript

Oddelek: Programiranje
92038 (1852) MRB0rYS

Več podobnih tem