Scheduling Processes
All the processes are started when systems boots or when a command is run.
Processes/commands can be scheduled to be executed at a specific time on a specific date by using the
cron
daemon.
Commands
crontab
crontab
- maintain crontab files for individual usersA crontab file contains instructions for the cron daemon
crond
- daemon to execute scheduled commandsEach user can define their own crontab and the commands are executed under the user who owns that particular crontab
# Systems level crontabs
less /etc/crontab
# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.
SHELL=/bin/sh
# You can also override PATH, but by default, newer versions inherit it from the environment
#PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
17 * * * * root cd / && run-parts --report /etc/cron.hourly
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
#
# anacron runs processes on a set schedule (hourly, daily, weekly, monthly)
ls -lah /etc/cron.daily/
total 56K
drwxr-xr-x 2 root root 4,0K ott 5 09:09 .
drwxr-xr-x 135 root root 12K nov 3 21:47 ..
-rwxr-xr-x 1 root root 311 lug 16 2019 0anacron
-rwxr-xr-x 1 root root 376 dic 4 2019 apport
-rwxr-xr-x 1 root root 1,5K lug 28 09:26 apt-compat
-rwxr-xr-x 1 root root 355 dic 29 2017 bsdmainutils.dpkg-remove
-rwxr-xr-x 1 root root 384 nov 19 2019 cracklib-runtime
-rwxr-xr-x 1 root root 123 dic 5 2021 dpkg
-rwxr-xr-x 1 root root 377 gen 21 2019 logrotate
-rwxr-xr-x 1 root root 1,3K mar 17 2022 man-db
-rw-r--r-- 1 root root 102 feb 13 2020 .placeholder
-rwxr-xr-x 1 root root 652 dic 7 2020 plocate
# Every script is own by root, since they are associated to system-wide processes
crontab -e
# Edit user's crontab in a text editor (chose prefered text editor at first run)
# Expression Syntax:
m h dom mon dow command
# m = minutes (0-59)
# h = hours (0-23)
# dom = day of the month (1-31)
# mon = month (1-12)
# dow = day of the week (0-6, sunday=0, saturday=6)
# command to run according to the schedule
crontab -l
# List user's crontab
crontab -r
# Remove the current user's crontab
# List all user's crontabs
sudo su
for user in $(cut -f1 -d: /etc/passwd); do echo $user; crontab -u $user -l; done
π Check the crontab.guru editor for cron schedule expressions.
Boot Process
/etc/init.d
- contains start/stop scripts for various services, while booting and shutting down the systeminit (short for initialization) is the program that spawns all other processes. It runs as a daemon and typically has PID 1.
The applications that are started by init are located in the
/etc/rc.d
folder. Within this directory there is a separate folder for each run level, eg rc0.d, rc1.d, and so on.
ls -lah /etc/init.d/
total 184K
drwxr-xr-x 2 root root 4,0K ott 28 22:52 .
drwxr-xr-x 135 root root 12K nov 3 21:47 ..
-rwxr-xr-x 1 root root 2,3K nov 28 2019 acpid
-rwxr-xr-x 1 root root 5,5K nov 5 2019 alsa-utils
-rwxr-xr-x 1 root root 2,1K lug 16 2019 anacron
-rwxr-xr-x 1 root root 3,7K apr 1 2020 apparmor
-rwxr-xr-x 1 root root 2,9K mag 10 15:23 apport
-rwxr-xr-x 1 root root 2,4K ago 21 2018 avahi-daemon
-rwxr-xr-x 1 root root 2,9K feb 26 2020 bluetooth
-rwxr-xr-x 1 root root 1,3K mar 27 2020 console-setup.sh
-rwxr-xr-x 1 root root 3,0K mar 18 2021 cron
-rwxr-xr-x 1 root root 2,8K feb 17 2020 cups
-rwxr-xr-x 1 root root 2,0K apr 10 2020 cups-browsed
-rwxr-xr-x 1 root root 3,1K set 30 2019 dbus
-rwxr-xr-x 1 root root 3,0K apr 21 2022 gdm3
-rwxr-xr-x 1 root root 985 gen 13 2021 grub-common
-rwxr-xr-x 1 root root 1,8K feb 21 2022 hwclock.sh
-rwxr-xr-x 1 root root 2,6K dic 13 2019 irqbalance
-rwxr-xr-x 1 root root 3,1K mag 19 2017 kerneloops
-rwxr-xr-x 1 root root 1,5K nov 27 2019 keyboard-setup.sh
-rwxr-xr-x 1 root root 2,0K feb 19 2020 kmod
-rwxr-xr-x 1 root root 695 gen 28 2020 lvm2
-rwxr-xr-x 1 root root 586 gen 28 2020 lvm2-lvmpolld
-rwxr-xr-x 1 root root 1,9K set 29 2020 open-vm-tools
-rwxr-xr-x 1 root root 9,0K dic 3 2018 openvpn
-rwxr-xr-x 1 root root 1,4K feb 23 2022 plymouth
-rwxr-xr-x 1 root root 760 feb 23 2022 plymouth-log
-rwxr-xr-x 1 root root 959 feb 25 2022 procps
-rwxr-xr-x 1 root root 469 ott 15 2020 pulseaudio-enable-autospawn
-rwxr-xr-x 1 root root 4,4K ott 15 2019 rsync
-rwxr-xr-x 1 root root 2,2K feb 11 2020 saned
-rwxr-xr-x 1 root root 2,0K gen 12 2020 speech-dispatcher
-rwxr-xr-x 1 root root 2,5K set 27 2019 spice-vdagent
-rwxr-xr-x 1 root root 6,8K giu 27 20:28 udev
-rwxr-xr-x 1 root root 2,1K gen 21 2020 ufw
-rwxr-xr-x 1 root root 1,4K lug 21 2020 unattended-upgrades
-rwxr-xr-x 1 root root 1,3K lug 21 2020 uuidd
-rwxr-xr-x 1 root root 485 ago 11 2018 whoopsie
-rwxr-xr-x 1 root root 2,7K ott 19 2021 x11-common
ls -d /etc/rc*
/etc/rc0.d /etc/rc1.d /etc/rc2.d /etc/rc3.d /etc/rc4.d /etc/rc5.d /etc/rc6.d /etc/rcS.d
man runlevel
# Mapping between runlevels and systemd targets
βββββββββββ¬ββββββββββββββββββββ
βRunlevel β Target β
βββββββββββΌββββββββββββββββββββ€
β0 β poweroff.target β
βββββββββββΌββββββββββββββββββββ€
β1 β rescue.target β
βββββββββββΌββββββββββββββββββββ€
β2, 3, 4 β multi-user.target β
βββββββββββΌββββββββββββββββββββ€
β5 β graphical.target β
βββββββββββΌββββββββββββββββββββ€
β6 β reboot.target β
βββββββββββ΄ββββββββββββββββββββ
ls -lah /etc/rc5.d/
total 16K
drwxr-xr-x 2 root root 4,0K set 12 23:06 .
drwxr-xr-x 135 root root 12K nov 3 21:47 ..
lrwxrwxrwx 1 root root 27 apr 13 2021 K01speech-dispatcher -> ../init.d/speech-dispatcher
lrwxrwxrwx 1 root root 15 apr 13 2021 S01acpid -> ../init.d/acpid
lrwxrwxrwx 1 root root 17 apr 13 2021 S01anacron -> ../init.d/anacron
lrwxrwxrwx 1 root root 16 apr 13 2021 S01apport -> ../init.d/apport
lrwxrwxrwx 1 root root 22 apr 13 2021 S01avahi-daemon -> ../init.d/avahi-daemon
lrwxrwxrwx 1 root root 19 apr 13 2021 S01bluetooth -> ../init.d/bluetooth
lrwxrwxrwx 1 root root 26 apr 13 2021 S01console-setup.sh -> ../init.d/console-setup.sh
lrwxrwxrwx 1 root root 14 apr 13 2021 S01cron -> ../init.d/cron
[...]
lrwxrwxrwx 1 root root 29 apr 13 2021 S01unattended-upgrades -> ../init.d/unattended-upgrades
lrwxrwxrwx 1 root root 15 apr 13 2021 S01uuidd -> ../init.d/uuidd
lrwxrwxrwx 1 root root 18 apr 13 2021 S01whoopsie -> ../init.d/whoopsie
Last updated