Skoči na vsebino

OS - 2021/22 - Naloge 8 kviz - resitve Starc Aljaz

Naloga: ucilnica.fri.uni-lj.si

/proc/$PID

Vsak proces ustvari imenik s svojim PID v /proc/. Katere trditve o imeniku vsakega procesa od spodnjih veljajo in katere ne?

Uprasanje Odgovor Utemeljitev Note
Imenik procesa izgine, ko se proces zaključi. Drzi A pid-based folder only exists as long as the corresponding process exists in some state
Datoteka environ vsebuje okoljske spremenljivke. Drzi environ Values of environment variables
Imenik vsebuje datoteko status. Drzi status Process status in human readable form
Imenik vsebuje tudi nadzorni blok procesa (Process Control Block). Ne drzi Saj je PCB hranjen v spominu. Napacen odgovor

Pojmi ter razlage - process IDs

Pojem Razlaga
pidof iskanje identifikacijskih številk procesov z danim imenom
pgrep iskanje identifikacijskih številk procesov po nekem vzorcu (ne po imenu)
$$ hrani identifikacijsko številko procesa v katerem se kliče
renice sprememba prioritete že zagnanega ukaza

Pidof finds the process id's (pids) of the named programs. It prints those id's on the standard output.

- linux.die.net

pgrep looks through the currently running processes and lists the process IDs which matches the selection criteria to stdout. All the criteria have to match.

- linux.die.net

In Bash $$ is the process ID

- stackoverflow.com

Renice alters the scheduling priority of one or more running processes. The following who parameters are interpreted as process ID's, process group ID's, or user names.

- linux.die.net

Pojmi in razlage

Pojem Razlaga Note
nohup preprečitev zapiranja procesa, če zapremo njegovega očeta
ls /proc/$(pidof cat) izpis drevesne hierarhije procesov Napacen odgovor - nimam pojma kaj zeli imet
ps -u $(whoami) izpis svojih procesov
fg prestavitev procesa v ospredje

Run COMMAND, ignoring hangup signals.

- linux.die.net

Resume jobspec in the foreground, and make it the current job. If jobspec is not present, the shell's notion of the current job is used.

- linux.die.net

Absolute nonsense

Mnenja sem, da je ukaz ls /proc/$(pidof cat) popolna nesmiselnost.

Začnimo že s dejstvom, da je manipulacija ali branje vsebine /proc/ imenskega prostora v tako visokem okolju kot je bash nevaren zaradi velikanskega časovnega zamika v izvajanju zaporednih ukazov - beri unix.stackexchange.com.

Pa tudi ukaz sam po sebi nima nima dosti smisla. Če ga "razstreščimo na prafaktorje" dobimo tri dele: korenski ukaz ls, ter ostale argumente tega ukaza, od katerih je eden (/proc/) vedno podan, ostali pa so podani odvisno od trenutnega stanja procesov na sistemu.

Danimo primer, da se na sistemu ne izvaja niti en process ukaza cat - ukaz pidof cat nam ne vrne ničesar, končen ukaz je ls /proc/. Lahko pa pride do primera, da imamo hkrati več procesov istega ukaza, kot za primer pidof firefox, ki mi, v tem trenutku, vrne 11237 10761 10700 8672 7568 7396. V tem primeru, bo končni ukaz ls /proc/11237 10761 10700 8672 7568 7396 - kjer ima ukaz ls kar naenkrat 6 argumentov, od katerih je 5 argumentov nepredvidenih. V tem specificnem primeru, kjer samo beremo vsebino nekih datotek, je to dokaj nekritična napaka - je pa izredno slaba praksa, katere se je, po mojem mnenju, za izogibati kot črne kuge.

Ekvivalentni ukazi

Podan ukaz Izbran ukaz Note
CTRL+Z Nima ekvivalenta napacen odgovor
kill -15 11796 kill -SIGTERM 11796
kill -QUIT 11796 CTRL+\
kill -SIGKILL 11796 kill -9 11796

Signal 20

Program gedit zaženemo v ospredju. Nato mu želimo poslati signal s številko 20. Katere od spodnjih trditev držijo in katere ne?

Ukaz Pravilnost
Signal mu lahko pošljemo z ukazom pkill. Drzi
Signal mu lahko pošljemo z ukazom kill. Drzi
Signal mu lahko pošljemo z ukazom killall. Drzi
Signal mu lahko pošljemo s kombinacijo tipk CTRL+Z. Drzi

Zadnja posodobitev: April 28, 2022