AMSA
Validació de la pràctica 2 (0.7 p.)
Donat el següent codi de la pràctica, on get_processes i get_priorities ja està implementat i passa tots els tests, implementa la funció: get_ignored_sigquit, que a partir dels processos del /proc, retorni únicament una List de Process que ignorin la senyal SIGQUIT.
from typing import List
from amsatop import Htop, Process, TaskType
from amsatop.utils import (
StatFile,
StatusFile,
get_stat_file_from_path,
get_status_file_from_path,
)
class Amsatop(Htop):
def __init__(self):
super().__init__()
def get_processes(self) -> List[Process]:
# Already implemented
...
def get_priorities(self) -> List[Process]:
# Already implemented
...
def get_ignored_sigquit(self) -> List[Process]:
# TODO: implement it!
...Recordeu que, al paquet amsatop.utils teniu:
@dataclass(frozen=True)
class StatFile:
pid: int
command: str
state: str
ppid: int
pgrp: int
session: int@dataclass(frozen=True)
class StatusFile:
Name: str
State: str
Pid: int
Uid: List[int]
Gid: List[int]
SigPnd: str = ''
ShdPnd: str = ''
SigBlk: str = ''
SigIgn: str = ''
SigCgt: str = ''
def get_stat_file_from_path(path: str) -> StatFile | None:
...
def get_status_file_from_path(path: str) -> StatusFile | None:
...I al paquet amsatop:
class TaskType(Enum):
PROCESS = "process"
THREAD = "thread"
KTHREAD = "kthread"
@dataclass(frozen=True)
class Process:
pid: int
command: str
type: TaskType
priority: int | NoneLa taula de senyals és la següent:
| # | Signal | Default Action | Comment | POSIX |
|---|---|---|---|---|
| 1 | SIGHUP | Terminate | Hang up controlling terminal or process | Yes |
| 2 | SIGINT | Terminate | Interrupt from keyboard, Control-C | Yes |
| 3 | SIGQUIT | Dump | Quit from keyboard, Control-\ | Yes |
| 4 | SIGILL | Dump | Illegal instruction | Yes |
Validació pràctica 1 (0.2 punts.):
Donada la següent unit de systemd, que es troba a /etc/systemd/system/my_custom.service:
[Unit]
Description=My Custom Script Service
[Service]
ExecStart=/usr/local/bin/myscript.sh
[Install]
WantedBy=multi-user.target
I on el script /usr/local/bin/myscript.sh:
$ cat /usr/local/bin/myscript.sh
figlet "Hello World!"1) Digues quines comandes executaries per veure el output de la comanda i/o l’estat del servei (pot ser una única comanda o dues, es indiferent) (0.05 p.)
2) L’estat del servei mostra el següent. Què faries per a arreglar-ho? Quins fitxers modificaries? Qué comprovaries? Justifica la teva resposta breument: (0.15 p.):
myscript.service - My Custom Script Service
Loaded: loaded (/etc/systemd/system/my_custom.service; disabled; preset: enabled)
Active: failed (Result: exit-code) since Fri 2025-10-31 10:17:19 CET; 2s ago
Duration: 1ms
Process: 7014 ExecStart=/usr/local/bin/myscript.sh (code=exited, status=203/EXEC)
Main PID: 7014 (code=exited, status=203/EXEC)
CPU: 799us
Oct 31 10:17:19 amsa systemd[1]: Started my_custom.service - My Custom Script Service.
Oct 31 10:17:19 amsa (cript.sh)[7014]: my_custom.service: Failed to execute
/usr/local/bin/myscript.sh: Exec format error
Oct 31 10:17:19 amsa systemd[1]: my_custom.service: Main process exited,
code=exited, status=203/EXEC
Oct 31 10:17:19 amsa systemd[1]: my_custom.service: Failed with result 'exit-code'.
Permissos (0.6 punts)
Tinc un sistema on els fitxers /etc/group i /etc/passwd són:
/etc/group | /etc/passwd
------------------------------- |-------------------------------
root:x:0: | root:x:0:0:root:/root:/bin/bash
mail:x:8: | www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
wheel:x:10:ferran,pablo | ferran:x:1001:100:User Ferran:/home/ferran:/bin/bash
users:x:100:oriol,ferran,pablo | pablo:x:1002:100:User Pablo:/home/pablo:/bin/nu
audio:x:101:ferran,oriol | oriol:x:1003:100:User Oriol:/home/oriol:/bin/zsh
video:x:102:ferran,pablo |
babui:x:200:ferran |
nogroup:x:65534: |
El fitxer /etc/sudoers i l’arxiu /etc/hosts són:
/etc/sudoers | /etc/hosts
-------------------------------|-------------------------------
root ALL=(ALL:ALL) ALL | 127.0.0.1 localhost
%wheel ALL=(ALL:ALL) ALL | 127.0.0.2 eldespatx
I el fitxer fstab és:
/dev/root_vg/root / btrfs x-initrd.mount,defaults,subvol=/root 0 0
/dev/disk/by-partlabel/EFI /boot vfat defaults,umask=0077 0 2
/dev/disk/by-partlabel/disk-nvme-swap none swap defaults
I, si faig ls -la al directori /media, l’output és el següent:
drwxr-xr-x 3 root root 4096 oct 27 10:00 .
drwxr-xr-x 18 root root 4096 oct 27 09:00 ..
drwxrwx--- 2 root babui 4096 oct 27 09:30 babui
drwxrwx--- 2 root babui 4096 oct 27 09:35 my_photos
Pot entrar el Pablo a la carpeta “babui”? i el Ferran? i l’Oriol? (0.1p)
En cas que un o més usuaris no puguin accedir, indica quines comandes executarien des del seu usuari per poder entrar a la carpeta sense privilegis d’administrador. És a dir, l’usuari hauria de poder fer:
cd /media/babuii accedir-hi. Si l’usuari no pogués accedir de cap manera, justifica el motiu. (0.3p).Quan vau crear un arxiu de swapfile a la màquina virtual desde l’usuari “root”, vau executar:
# chmod 600 <swapfile> --> la comanda: 'chmod u=rw,go= <swapfile>' és equivalent.
Per què la comanda swapon es queixa si no hem executat abans la comanda anterior? Tot i que la comanda swapon es queixi, el swapfile és crea i s’activa igualment, a quin risc exposem el sistema? (0,2 punts)
Sistema de Fitxers
He afegit un disc dur nou al meu ordinador. La comanda lsblk mostra el següent:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
nvme0n1 259:0 0 477G 0 disk
|-- nvme0n1p1 259:1 0 512M 0 part /boot
|-- nvme0n1p2 259:2 0 476G 0 part /
|-- nvme0n1p3 259:3 0 8G 0 part [SWAP]
sda 8:0 0 500G 0 disk
4.1) Al nou disc li vull ficar un sistema de fitxers ext4, i montar-lo al directori /mnt/amsa. Com ho puc fer? Quines comandes he d’emprar? (0.5)
4.2) Que he de fer per aconseguir que aquests canvis siguin permanents (explica les comandes i/o fitxers editats amb els continguts), la solució no pot ser un servei de sistema. (0.5)