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.
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.
In Bash $$ is the process ID
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.
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.
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.
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 |