Linux sagir-us3.hostever.us 5.14.0-503.15.1.el9_5.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Nov 28 07:25:19 EST 2024 x86_64
LiteSpeed
Server IP : 104.247.110.100 & Your IP : 216.73.216.54
Domains : 129 Domain
User : killarne
Terminal
Auto Root
Create File
Create Folder
Localroot Suggester
Backdoor Destroyer
Readme
/
usr /
sbin /
Delete
Unzip
Name
Size
Permission
Date
Action
NetworkManager
3.71
MB
-rwxr-xr-x
2026-08-24 11:56
accessdb
15.42
KB
-rwxr-xr-x
2025-09-21 12:57
addgnupghome
3.01
KB
-rwxr-xr-x
2019-03-18 18:40
addpart
15.16
KB
-rwxr-xr-x
2026-04-04 22:15
adduser
137.84
KB
-rwxr-xr-x
2026-04-08 19:49
agetty
56.71
KB
-rwxr-xr-x
2026-04-04 22:15
alternatives
39.59
KB
-rwxr-xr-x
2025-03-12 10:43
anacron
39.52
KB
-rwxr-xr-x
2026-04-09 05:59
applygnupgdefaults
2.17
KB
-rwxr-xr-x
2018-01-25 15:06
arp
63.21
KB
-rwxr-xr-x
2024-10-02 19:02
arping
27.25
KB
-rwxr-xr-x
2025-10-20 12:44
arptables
231.41
KB
-rwxr-xr-x
2025-02-04 03:47
arptables-nft
231.41
KB
-rwxr-xr-x
2025-02-04 03:47
arptables-nft-restore
231.41
KB
-rwxr-xr-x
2025-02-04 03:47
arptables-nft-save
231.41
KB
-rwxr-xr-x
2025-02-04 03:47
arptables-restore
231.41
KB
-rwxr-xr-x
2025-02-04 03:47
arptables-save
231.41
KB
-rwxr-xr-x
2025-02-04 03:47
auditctl
51.59
KB
-rwxr-xr-x
2026-04-04 20:12
auditd
137.05
KB
-rwxr-xr-x
2026-04-04 20:12
augenrules
4.05
KB
-rwxr-xr-x
2026-04-04 20:12
aureport
120.3
KB
-rwxr-xr-x
2026-04-04 20:12
ausearch
120.27
KB
-rwxr-xr-x
2026-04-04 20:12
authconfig
18.69
KB
-rwxr-xr-x
2025-03-12 14:22
autrace
19.17
KB
-rwxr-x---
2026-04-04 20:12
avcstat
15.35
KB
-rwxr-xr-x
2025-03-12 23:36
badblocks
35.35
KB
-rwxr-xr-x
2025-09-21 15:03
biosdecode
28.06
KB
-rwxr-xr-x
2026-04-09 07:32
biosdevname
39.91
KB
-rwxr-xr-x
2024-10-02 20:13
blkdeactivate
15.97
KB
-r-xr-xr-x
2026-06-03 10:51
blkdiscard
23.2
KB
-rwxr-xr-x
2026-04-04 22:15
blkid
51.61
KB
-rwxr-xr-x
2026-04-04 22:15
blkzone
35.45
KB
-rwxr-xr-x
2026-04-04 22:15
blockdev
31.41
KB
-rwxr-xr-x
2026-04-04 22:15
bridge
130.95
KB
-rwxr-xr-x
2026-04-05 08:31
capsh
31.21
KB
-rwxr-xr-x
2026-05-20 10:00
cfdisk
96.34
KB
-rwxr-xr-x
2026-04-04 22:15
cgdisk
150.86
KB
-rwxr-xr-x
2022-01-30 23:44
chcpu
31.42
KB
-rwxr-xr-x
2026-04-04 22:15
chgpasswd
59.77
KB
-rwxr-xr-x
2026-04-08 19:49
chkconfig
43.78
KB
-rwxr-xr-x
2025-03-12 10:43
chpasswd
55.63
KB
-rwxr-xr-x
2026-04-08 19:49
chronyd
373.58
KB
-rwxr-xr-x
2026-04-09 00:49
chroot
39.55
KB
-rwxr-xr-x
2026-09-10 17:32
clamd
207.85
KB
-rwxr-xr-x
2026-08-10 15:25
clamonacc
196.23
KB
-rwxr-xr-x
2026-08-10 15:25
clock
59.77
KB
-rwxr-xr-x
2026-04-04 22:15
consoletype
15.28
KB
-rwxr-xr-x
2025-03-12 19:47
convertquota
69.01
KB
-rwxr-xr-x
2025-03-12 20:44
cracklib-check
15.11
KB
-rwxr-xr-x
2026-04-09 05:18
cracklib-format
255
B
-rwxr-xr-x
2026-04-09 05:18
cracklib-packer
15.11
KB
-rwxr-xr-x
2026-04-09 05:18
cracklib-unpacker
15.1
KB
-rwxr-xr-x
2026-04-09 05:18
create-cracklib-dict
994
B
-rwxr-xr-x
2015-08-18 18:41
crond
76.16
KB
-rwxr-xr-x
2026-04-09 05:59
csf
261.96
KB
-rwx------
2026-09-07 09:28
ctrlaltdel
15.19
KB
-rwxr-xr-x
2026-04-04 22:15
ctstat
23.59
KB
-rwxr-xr-x
2026-04-05 08:31
dcb
94.69
KB
-rwxr-xr-x
2026-04-05 08:31
ddns-confgen
27.26
KB
-rwxr-xr-x
2026-09-16 16:17
debugfs
233.03
KB
-rwxr-xr-x
2025-09-21 15:03
delpart
15.12
KB
-rwxr-xr-x
2026-04-04 22:15
depmod
165.57
KB
-rwxr-xr-x
2025-09-18 11:41
devlink
165.84
KB
-rwxr-xr-x
2026-04-05 08:31
dhclient
1.91
MB
-rwxr-xr-x
2026-04-09 06:48
dhclient-script
32.86
KB
-rwxr-xr-x
2026-04-09 00:58
dmfilemapd
23.3
KB
-r-xr-xr-x
2026-06-03 10:52
dmidecode
164.31
KB
-rwxr-xr-x
2026-04-09 07:32
dmsetup
156.77
KB
-r-xr-xr-x
2026-06-03 10:52
dmstats
156.77
KB
-r-xr-xr-x
2026-06-03 10:52
dnssec-cds
47.67
KB
-rwxr-xr-x
2026-09-16 16:17
dnssec-checkds
924
B
-rwxr-xr-x
2026-09-16 16:17
dnssec-coverage
926
B
-rwxr-xr-x
2026-09-16 16:17
dnssec-dsfromkey
39.44
KB
-rwxr-xr-x
2026-09-16 16:17
dnssec-importkey
35.44
KB
-rwxr-xr-x
2026-09-16 16:17
dnssec-keyfromlabel
39.42
KB
-rwxr-xr-x
2026-09-16 16:17
dnssec-keygen
47.45
KB
-rwxr-xr-x
2026-09-16 16:17
dnssec-keymgr
922
B
-rwxr-xr-x
2026-09-16 16:17
dnssec-revoke
31.41
KB
-rwxr-xr-x
2026-09-16 16:17
dnssec-settime
47.44
KB
-rwxr-xr-x
2026-09-16 16:17
dnssec-signzone
95.88
KB
-rwxr-xr-x
2026-09-16 16:17
dnssec-verify
31.45
KB
-rwxr-xr-x
2026-09-16 16:17
dosfsck
84.56
KB
-rwxr-xr-x
2022-01-29 18:41
dosfslabel
40.02
KB
-rwxr-xr-x
2022-01-29 18:41
dovecot
359.74
KB
-rwxr-xr-x
2024-09-20 10:46
dpll
48.16
KB
-rwxr-xr-x
2026-04-05 08:31
dumpe2fs
31.29
KB
-rwxr-xr-x
2025-09-21 15:03
e2freefrag
15.19
KB
-rwxr-xr-x
2025-09-21 15:03
e2fsck
356.09
KB
-rwxr-xr-x
2025-09-21 15:03
e2image
43.41
KB
-rwxr-xr-x
2025-09-21 15:03
e2label
104.46
KB
-rwxr-xr-x
2025-09-21 15:03
e2mmpstatus
31.29
KB
-rwxr-xr-x
2025-09-21 15:03
e2undo
23.16
KB
-rwxr-xr-x
2025-09-21 15:03
e4crypt
31.3
KB
-rwxr-xr-x
2025-09-21 15:03
e4defrag
31.26
KB
-rwxr-xr-x
2025-09-21 15:03
eapol_test
2.72
MB
-rwxr-xr-x
2025-03-13 12:42
ebtables
231.41
KB
-rwxr-xr-x
2025-02-04 03:47
ebtables-nft
231.41
KB
-rwxr-xr-x
2025-02-04 03:47
ebtables-nft-restore
231.41
KB
-rwxr-xr-x
2025-02-04 03:47
ebtables-nft-save
231.41
KB
-rwxr-xr-x
2025-02-04 03:47
ebtables-restore
231.41
KB
-rwxr-xr-x
2025-02-04 03:47
ebtables-save
231.41
KB
-rwxr-xr-x
2025-02-04 03:47
ebtables-translate
231.41
KB
-rwxr-xr-x
2025-02-04 03:47
editmap
81.87
KB
-rwxr-xr-x
2023-09-26 17:37
editmap.sendmail
81.87
KB
-rwxr-xr-x
2023-09-26 17:37
edquota
89.5
KB
-rwxr-xr-x
2025-03-12 20:44
efibootdump
23.87
KB
-rwxr-xr-x
2022-01-30 05:12
efibootmgr
45.18
KB
-rwxr-xr-x
2022-01-30 05:12
ether-wake
50.24
KB
-rwxr-xr-x
2024-10-02 19:02
ethtool
988.96
KB
-rwxr-xr-x
2025-10-20 14:14
exicyclog
11.13
KB
-rwxr-xr-x
2024-08-13 10:04
exigrep
10.51
KB
-rwxr-xr-x
2024-08-13 10:04
exim
4.73
MB
-rwsr-xr-x
2024-08-13 10:04
exim_checkaccess
4.85
KB
-rwxr-xr-x
2024-08-13 10:04
exim_dbmbuild
27.41
KB
-rwxr-xr-x
2024-08-13 10:04
exim_dumpdb
38.11
KB
-rwxr-xr-x
2024-08-13 10:04
exim_fixdb
42.74
KB
-rwxr-xr-x
2024-08-13 10:04
exim_lock
31.64
KB
-rwxr-xr-x
2024-08-13 10:04
exim_tidydb
38.29
KB
-rwxr-xr-x
2024-08-13 10:04
eximstats
148.24
KB
-rwxr-xr-x
2024-08-13 10:04
exinext
7.19
KB
-rwxr-xr-x
2024-08-13 10:04
exipick
59.38
KB
-rwxr-xr-x
2024-08-13 10:04
exiqgrep
5.66
KB
-rwxr-xr-x
2024-08-13 10:04
exiqsumm
5.3
KB
-rwxr-xr-x
2024-08-13 10:04
exiwhat
4.45
KB
-rwxr-xr-x
2024-08-13 10:04
extlinux
205.84
KB
-rwxr-xr-x
2026-04-09 03:25
faillock
23.18
KB
-rwxr-xr-x
2026-09-08 12:43
fatlabel
40.02
KB
-rwxr-xr-x
2022-01-29 18:41
fdformat
23.19
KB
-rwxr-xr-x
2026-04-04 22:15
fdisk
112.07
KB
-rwxr-xr-x
2026-04-04 22:15
filefrag
19.22
KB
-rwxr-xr-x
2025-09-21 15:03
findfs
15.16
KB
-rwxr-xr-x
2026-04-04 22:15
fix-info-dir
7.85
KB
-rwxr-xr-x
2022-05-01 13:12
fixfiles
12.1
KB
-rwxr-xr-x
2026-04-04 23:51
fixparts
60.98
KB
-rwxr-xr-x
2022-01-30 23:44
flashrom
911.98
KB
-rwxr-xr-x
2022-02-11 21:46
fsck
43.55
KB
-rwxr-xr-x
2026-04-04 22:15
fsck.cramfs
31.38
KB
-rwxr-xr-x
2026-04-04 22:15
fsck.ext2
356.09
KB
-rwxr-xr-x
2025-09-21 15:03
fsck.ext3
356.09
KB
-rwxr-xr-x
2025-09-21 15:03
fsck.ext4
356.09
KB
-rwxr-xr-x
2025-09-21 15:03
fsck.fat
84.56
KB
-rwxr-xr-x
2022-01-29 18:41
fsck.minix
55.71
KB
-rwxr-xr-x
2026-04-04 22:15
fsck.msdos
84.56
KB
-rwxr-xr-x
2022-01-29 18:41
fsck.vfat
84.56
KB
-rwxr-xr-x
2022-01-29 18:41
fsck.xfs
2.54
KB
-rwxr-xr-x
2025-09-21 13:01
fsfreeze
15.15
KB
-rwxr-xr-x
2026-04-04 22:15
fstrim
43.5
KB
-rwxr-xr-x
2026-04-04 22:15
fuser
41.09
KB
-rwxr-xr-x
2022-03-25 15:53
fxload
19.91
KB
-rwxr-xr-x
2022-01-30 09:53
g13-syshelp
88.6
KB
-rwxr-xr-x
2026-01-15 21:34
gdisk
187.38
KB
-rwxr-xr-x
2022-01-30 23:44
genhomedircon
32.04
KB
-rwxr-xr-x
2026-04-04 23:52
genhostid
15.28
KB
-rwxr-xr-x
2025-03-12 19:47
genl
130.15
KB
-rwxr-xr-x
2026-04-05 08:31
getcap
15.13
KB
-rwxr-xr-x
2026-05-20 10:00
getenforce
15.27
KB
-rwxr-xr-x
2025-03-12 23:36
getpcaps
15.13
KB
-rwxr-xr-x
2026-05-20 10:00
getpidprevcon
15.29
KB
-rwxr-xr-x
2025-03-12 23:36
getpolicyload
15.28
KB
-rwxr-xr-x
2025-03-12 23:36
getsebool
15.3
KB
-rwxr-xr-x
2025-03-12 23:36
groupadd
68.77
KB
-rwxr-xr-x
2026-04-08 19:49
groupdel
64.53
KB
-rwxr-xr-x
2026-04-08 19:49
groupmems
55.77
KB
-rwxr-xr-x
2026-04-08 19:49
groupmod
72.76
KB
-rwxr-xr-x
2026-04-08 19:49
grpck
59.76
KB
-rwxr-xr-x
2026-04-08 19:49
grpconv
51.56
KB
-rwxr-xr-x
2026-04-08 19:49
grpunconv
51.53
KB
-rwxr-xr-x
2026-04-08 19:49
grub2-bios-setup
1.67
MB
-rwxr-xr-x
2026-04-06 12:55
grub2-get-kernel-settings
2.68
KB
-rwxr-xr-x
2026-04-06 12:55
grub2-install
1.97
MB
-rwxr-xr-x
2026-04-06 12:55
grub2-macbless
1.65
MB
-rwxr-xr-x
2026-04-06 12:55
grub2-mkconfig
9.21
KB
-rwxr-xr-x
2026-04-06 12:55
grub2-probe
1.67
MB
-rwxr-xr-x
2026-04-06 12:55
grub2-reboot
4.7
KB
-rwxr-xr-x
2026-04-06 12:55
grub2-set-bootflag
15.09
KB
-rwsr-xr-x
2026-04-06 12:55
grub2-set-default
3.46
KB
-rwxr-xr-x
2026-04-06 12:55
grub2-set-password
2.74
KB
-rwxr-xr-x
2026-04-06 12:55
grub2-setpassword
2.74
KB
-rwxr-xr-x
2026-04-06 12:55
grub2-switch-to-blscfg
8.81
KB
-rwxr-xr-x
2026-04-06 12:55
grubby
260
B
-rwxr-xr-x
2026-04-14 16:50
halt
298.43
KB
-rwxr-xr-x
2026-09-15 22:00
hdparm
143.06
KB
-rwxr-xr-x
2022-03-25 06:20
httpd
2.25
MB
-rwxr-xr-x
2024-07-18 11:39
hwclock
59.77
KB
-rwxr-xr-x
2026-04-04 22:15
iconvconfig
31.67
KB
-rwxr-xr-x
2026-08-03 10:14
ifconfig
78.98
KB
-rwxr-xr-x
2024-10-02 19:02
ifdown
1.07
KB
-rwxr-xr-x
2025-12-12 15:24
ifenslave
23.73
KB
-rwxr-xr-x
2025-10-20 12:44
ifstat
39.6
KB
-rwxr-xr-x
2026-04-05 08:31
ifup
1.04
KB
-rwxr-xr-x
2025-12-12 15:24
init
95.74
KB
-rwxr-xr-x
2026-09-15 22:00
insmod
165.57
KB
-rwxr-xr-x
2025-09-18 11:41
install-info
106.7
KB
-rwxr-xr-x
2022-05-01 13:12
installkernel
323
B
-rwxr-xr-x
2026-04-14 16:50
intel_sdsi
22.43
KB
-rwxr-xr-x
2026-09-21 15:57
ip
774.32
KB
-rwxr-xr-x
2026-04-05 08:31
ip6tables
231.41
KB
-rwxr-xr-x
2025-02-04 03:47
ip6tables-nft
231.41
KB
-rwxr-xr-x
2025-02-04 03:47
ip6tables-nft-restore
231.41
KB
-rwxr-xr-x
2025-02-04 03:47
ip6tables-nft-save
231.41
KB
-rwxr-xr-x
2025-02-04 03:47
ip6tables-restore
231.41
KB
-rwxr-xr-x
2025-02-04 03:47
ip6tables-restore-translate
231.41
KB
-rwxr-xr-x
2025-02-04 03:47
ip6tables-save
231.41
KB
-rwxr-xr-x
2025-02-04 03:47
ip6tables-translate
231.41
KB
-rwxr-xr-x
2025-02-04 03:47
ipmaddr
19.45
KB
-rwxr-xr-x
2024-10-02 19:02
iprconfig
405.15
KB
-rwxr-xr-x
2022-03-25 07:42
iprdbg
56.27
KB
-rwxr-xr-x
2022-03-25 07:42
iprdump
32.02
KB
-rwxr-xr-x
2022-03-25 07:42
iprinit
76.68
KB
-rwxr-xr-x
2022-03-25 07:42
iprsos
2.19
KB
-rwxr-xr-x
2020-05-08 14:19
iprupdate
90.26
KB
-rwxr-xr-x
2022-03-25 07:42
ipset
15.27
KB
-rwxr-xr-x
2025-02-04 03:39
ipset-translate
15.27
KB
-rwxr-xr-x
2025-02-04 03:39
iptables
231.41
KB
-rwxr-xr-x
2025-02-04 03:47
iptables-nft
231.41
KB
-rwxr-xr-x
2025-02-04 03:47
iptables-nft-restore
231.41
KB
-rwxr-xr-x
2025-02-04 03:47
iptables-nft-save
231.41
KB
-rwxr-xr-x
2025-02-04 03:47
iptables-restore
231.41
KB
-rwxr-xr-x
2025-02-04 03:47
iptables-restore-translate
231.41
KB
-rwxr-xr-x
2025-02-04 03:47
iptables-save
231.41
KB
-rwxr-xr-x
2025-02-04 03:47
iptables-translate
231.41
KB
-rwxr-xr-x
2025-02-04 03:47
iptunnel
19.5
KB
-rwxr-xr-x
2024-10-02 19:02
irqbalance
64.45
KB
-rwxr-xr-x
2026-04-08 16:40
irqbalance-ui
39.59
KB
-rwxr-xr-x
2026-04-08 16:40
iw
320.06
KB
-rwxr-xr-x
2026-04-08 17:40
kexec
192.59
KB
-rwxr-xr-x
2026-04-08 18:11
key.dns_resolver
31.35
KB
-rwxr-xr-x
2023-04-05 19:15
kpartx
47.52
KB
-rwxr-xr-x
2026-04-05 00:24
lchage
23.16
KB
-rwxr-xr-x
2025-09-21 10:53
ldattach
27.23
KB
-rwxr-xr-x
2026-04-04 22:15
ldconfig
1.12
MB
-rwxr-xr-x
2026-08-03 10:14
lfd
392.54
KB
-rwx------
2026-09-07 09:30
lgroupadd
15.12
KB
-rwxr-xr-x
2025-09-21 10:53
lgroupdel
15.11
KB
-rwxr-xr-x
2025-09-21 10:53
lgroupmod
23.13
KB
-rwxr-xr-x
2025-09-21 10:53
lid
19.13
KB
-rwxr-xr-x
2025-09-21 10:53
lnewusers
23.13
KB
-rwxr-xr-x
2025-09-21 10:53
lnstat
23.59
KB
-rwxr-xr-x
2026-04-05 08:31
load_policy
15.12
KB
-rwxr-xr-x
2026-04-04 23:52
logrotate
95.66
KB
-rwxr-xr-x
2025-09-21 12:04
logsave
15.19
KB
-rwxr-xr-x
2025-09-21 15:03
losetup
72.09
KB
-rwxr-xr-x
2026-04-04 22:15
lpasswd
23.13
KB
-rwxr-xr-x
2025-09-21 10:53
lsmod
165.57
KB
-rwxr-xr-x
2025-09-18 11:41
lspci
97.57
KB
-rwxr-xr-x
2025-03-12 20:27
luseradd
23.13
KB
-rwxr-xr-x
2025-09-21 10:53
luserdel
15.12
KB
-rwxr-xr-x
2025-09-21 10:53
lusermod
23.13
KB
-rwxr-xr-x
2025-09-21 10:53
mail
372.44
KB
-rwxr-xr-x
2023-12-09 06:47
mailstats
61.72
KB
-rwxr-xr-x
2023-09-26 17:37
mailx
372.44
KB
-rwxr-xr-x
2023-12-09 06:47
makedumpfile
431.84
KB
-rwxr-xr-x
2026-04-08 18:11
makemap
86.18
KB
-rwxr-xr-x
2023-09-26 17:37
makemap.sendmail
86.18
KB
-rwxr-xr-x
2023-09-26 17:37
matchpathcon
15.31
KB
-rwxr-xr-x
2025-03-12 23:36
md-auto-readd.sh
401
B
-rwxr-xr-x
2026-09-15 13:21
mdadm
629.92
KB
-rwxr-xr-x
2026-09-15 13:24
mdmon
296.34
KB
-rwxr-xr-x
2026-09-15 13:24
mii-diag
24.2
KB
-rwxr-xr-x
2024-10-02 19:02
mii-tool
27.78
KB
-rwxr-xr-x
2024-10-02 19:02
mkdict
255
B
-rwxr-xr-x
2026-04-09 05:18
mkdosfs
52.51
KB
-rwxr-xr-x
2022-01-29 18:41
mkdumprd
12.13
KB
-rwxr-xr-x
2026-04-08 18:11
mke2fs
132.53
KB
-rwxr-xr-x
2025-09-21 15:03
mkfs
15.17
KB
-rwxr-xr-x
2026-04-04 22:15
mkfs.cramfs
35.38
KB
-rwxr-xr-x
2026-04-04 22:15
mkfs.ext2
132.53
KB
-rwxr-xr-x
2025-09-21 15:03
mkfs.ext3
132.53
KB
-rwxr-xr-x
2025-09-21 15:03
mkfs.ext4
132.53
KB
-rwxr-xr-x
2025-09-21 15:03
mkfs.fat
52.51
KB
-rwxr-xr-x
2022-01-29 18:41
mkfs.minix
43.55
KB
-rwxr-xr-x
2026-04-04 22:15
mkfs.msdos
52.51
KB
-rwxr-xr-x
2022-01-29 18:41
mkfs.vfat
52.51
KB
-rwxr-xr-x
2022-01-29 18:41
mkfs.xfs
450.77
KB
-rwxr-xr-x
2025-09-21 13:02
mkhomedir_helper
23.21
KB
-rwxr-xr-x
2026-09-08 12:43
mklost+found
15.12
KB
-rwxr-xr-x
2025-09-21 15:03
mksquashfs
197.62
KB
-rwxr-xr-x
2024-04-03 13:45
mkswap
47.5
KB
-rwxr-xr-x
2026-04-04 22:15
modinfo
165.57
KB
-rwxr-xr-x
2025-09-18 11:41
modprobe
165.57
KB
-rwxr-xr-x
2025-09-18 11:41
mount.fuse
15.34
KB
-rwxr-xr-x
2025-03-12 19:30
named
544.11
KB
-rwxr-xr-x
2026-09-16 16:17
named-checkconf
39.4
KB
-rwxr-xr-x
2026-09-16 16:17
named-checkzone
39.34
KB
-rwxr-xr-x
2026-09-16 16:17
named-compilezone
39.34
KB
-rwxr-xr-x
2026-09-16 16:17
named-journalprint
15.13
KB
-rwxr-xr-x
2026-09-16 16:17
named-nzd2nzf
15.12
KB
-rwxr-xr-x
2026-09-16 16:17
nameif
15.58
KB
-rwxr-xr-x
2024-10-02 19:02
newusers
88.7
KB
-rwxr-xr-x
2026-04-08 19:49
nft
27.17
KB
-rwxr-xr-x
2026-08-26 12:09
nologin
15.16
KB
-rwxr-xr-x
2026-04-04 22:15
nsec3hash
15.2
KB
-rwxr-xr-x
2026-09-16 16:17
nstat
31.34
KB
-rwxr-xr-x
2026-04-05 08:31
oddjobd
71.84
KB
-rwxr-xr-x
2023-04-07 00:20
ownership
15.13
KB
-rwxr-xr-x
2026-04-09 07:32
packer
15.11
KB
-rwxr-xr-x
2026-04-09 05:18
pam_console_apply
43.51
KB
-rwxr-xr-x
2026-09-08 12:43
pam_namespace_helper
471
B
-rwxr-xr-x
2026-09-08 12:42
pam_timestamp_check
15.13
KB
-rwsr-xr-x
2026-09-08 12:43
parted
96.39
KB
-rwxr-xr-x
2025-03-12 20:00
partprobe
15.34
KB
-rwxr-xr-x
2025-03-12 20:00
partx
59.77
KB
-rwxr-xr-x
2026-04-04 22:15
pidof
23.33
KB
-rwxr-xr-x
2024-04-30 16:43
ping
89.33
KB
-rwxr-xr-x
2025-10-20 12:44
ping6
89.33
KB
-rwxr-xr-x
2025-10-20 12:44
pivot_root
15.16
KB
-rwxr-xr-x
2026-04-04 22:15
plipconfig
15.35
KB
-rwxr-xr-x
2024-10-02 19:02
pluginviewer
19.39
KB
-rwxr-xr-x
2025-09-25 11:46
plymouth-set-default-theme
6.05
KB
-rwxr-xr-x
2026-04-09 04:05
plymouthd
152.62
KB
-rwxr-xr-x
2026-04-09 04:05
poweroff
298.43
KB
-rwxr-xr-x
2026-09-15 22:00
praliases
82.03
KB
-rwxr-xr-x
2023-09-26 17:37
pure-ftpd
2.27
MB
-rwxr-xr-x
2018-08-31 17:30
pwck
55.6
KB
-rwxr-xr-x
2026-04-08 19:49
pwconv
47.45
KB
-rwxr-xr-x
2026-04-08 19:49
pwhistory_helper
19.2
KB
-rwxr-xr-x
2026-09-08 12:43
pwunconv
47.41
KB
-rwxr-xr-x
2026-04-08 19:49
quotacheck
93.62
KB
-rwxr-xr-x
2025-03-12 20:44
quotaoff
56.67
KB
-rwxr-xr-x
2025-03-12 20:44
quotaon
56.67
KB
-rwxr-xr-x
2025-03-12 20:44
quotastats
15.34
KB
-rwxr-xr-x
2025-03-12 20:44
raid-check
3.71
KB
-rwxr-xr-x
2026-09-15 13:21
rdisc
31.36
KB
-rwxr-xr-x
2025-10-20 12:44
rdma
117.06
KB
-rwxr-xr-x
2026-04-05 08:31
readprofile
23.27
KB
-rwxr-xr-x
2026-04-04 22:15
rear
26.46
KB
-rwxr-xr-x
2026-04-09 18:32
reboot
298.43
KB
-rwxr-xr-x
2026-09-15 22:00
repquota
77.55
KB
-rwxr-xr-x
2025-03-12 20:44
request-key
27.29
KB
-rwxr-xr-x
2023-04-05 19:15
resize2fs
67.64
KB
-rwxr-xr-x
2025-09-21 15:03
resizepart
23.4
KB
-rwxr-xr-x
2026-04-04 22:15
restorecon
23.19
KB
-rwxr-xr-x
2026-04-04 23:52
restorecon_xattr
15.13
KB
-rwxr-xr-x
2026-04-04 23:52
rfkill
31.34
KB
-rwxr-xr-x
2026-04-04 22:15
rmmod
165.57
KB
-rwxr-xr-x
2025-09-18 11:41
rndc
43.25
KB
-rwxr-xr-x
2026-09-16 16:17
rndc-confgen
23.26
KB
-rwxr-xr-x
2026-09-16 16:17
route
65.77
KB
-rwxr-xr-x
2024-10-02 19:02
rsyslogd
806.89
KB
-rwxr-xr-x
2026-09-22 04:31
rtacct
29.34
KB
-rwxr-xr-x
2026-04-05 08:31
rtcwake
35.26
KB
-rwxr-xr-x
2026-04-04 22:15
rtmon
126.05
KB
-rwxr-xr-x
2026-04-05 08:31
rtstat
23.59
KB
-rwxr-xr-x
2026-04-05 08:31
runlevel
298.43
KB
-rwxr-xr-x
2026-09-15 22:00
runuser
55.61
KB
-rwxr-xr-x
2026-04-04 22:15
saslauthd
88.33
KB
-rwxr-xr-x
2025-09-25 11:46
sasldblistusers2
15.27
KB
-rwxr-xr-x
2025-09-25 11:46
saslpasswd2
15.24
KB
-rwxr-xr-x
2025-09-25 11:46
sefcontext_compile
72.38
KB
-rwxr-xr-x
2025-03-12 23:36
selabel_digest
15.31
KB
-rwxr-xr-x
2025-03-12 23:36
selabel_get_digests_all_partial_matches
15.33
KB
-rwxr-xr-x
2025-03-12 23:36
selabel_lookup
15.3
KB
-rwxr-xr-x
2025-03-12 23:36
selabel_lookup_best_match
15.31
KB
-rwxr-xr-x
2025-03-12 23:36
selabel_partial_match
15.3
KB
-rwxr-xr-x
2025-03-12 23:36
selinux_check_access
15.31
KB
-rwxr-xr-x
2025-03-12 23:36
selinuxconlist
15.3
KB
-rwxr-xr-x
2025-03-12 23:36
selinuxdefcon
15.3
KB
-rwxr-xr-x
2025-03-12 23:36
selinuxenabled
15.27
KB
-rwxr-xr-x
2025-03-12 23:36
selinuxexeccon
15.29
KB
-rwxr-xr-x
2025-03-12 23:36
semanage
40.64
KB
-rwxr-xr-x
2026-04-05 11:05
semodule
32.04
KB
-rwxr-xr-x
2026-04-04 23:52
sendmail
856.39
KB
-rwxr-sr-x
2023-09-26 17:37
sendmail.sendmail
856.39
KB
-rwxr-sr-x
2023-09-26 17:37
service
4.51
KB
-rwxr-xr-x
2024-08-27 11:35
sestatus
23.13
KB
-rwxr-xr-x
2026-04-04 23:52
setcap
15.13
KB
-rwxr-xr-x
2026-05-20 10:00
setenforce
15.3
KB
-rwxr-xr-x
2025-03-12 23:36
setfiles
23.19
KB
-rwxr-xr-x
2026-04-04 23:52
setpci
31.35
KB
-rwxr-xr-x
2025-03-12 20:27
setquota
81.58
KB
-rwxr-xr-x
2025-03-12 20:44
setregdomain
1.71
KB
-rwxr-xr-x
2026-04-09 13:43
setsebool
19.15
KB
-rwxr-xr-x
2026-04-04 23:52
sfdisk
103.98
KB
-rwxr-xr-x
2026-04-04 22:15
sgdisk
167.14
KB
-rwxr-xr-x
2022-01-30 23:44
shutdown
298.43
KB
-rwxr-xr-x
2026-09-15 22:00
skdump
19.61
KB
-rwxr-xr-x
2022-02-09 21:01
sktest
15.51
KB
-rwxr-xr-x
2022-02-09 21:01
slattach
37.57
KB
-rwxr-xr-x
2024-10-02 19:02
smrsh
61.41
KB
-rwxr-xr-x
2023-09-26 17:37
ss
131.32
KB
-rwxr-xr-x
2026-04-05 08:31
sshd
406.9
KB
-rwxr-xr-x
2026-09-21 16:45
sulogin
43.4
KB
-rwxr-xr-x
2026-04-04 22:15
swaplabel
19.19
KB
-rwxr-xr-x
2026-04-04 22:15
swapoff
23.27
KB
-rwxr-xr-x
2026-04-04 22:15
swapon
43.31
KB
-rwxr-xr-x
2026-04-04 22:15
switch_root
23.2
KB
-rwxr-xr-x
2026-04-04 22:15
sysctl
31.49
KB
-rwxr-xr-x
2024-04-30 16:43
tc
640.09
KB
-rwxr-xr-x
2026-04-05 08:31
telinit
298.43
KB
-rwxr-xr-x
2026-09-15 22:00
testsaslauthd
15.16
KB
-rwxr-xr-x
2025-09-25 11:46
tipc
92.8
KB
-rwxr-xr-x
2026-04-05 08:31
tracepath
19.22
KB
-rwxr-xr-x
2025-10-20 12:44
tracepath6
19.22
KB
-rwxr-xr-x
2025-10-20 12:44
tsig-keygen
27.26
KB
-rwxr-xr-x
2026-09-16 16:17
tune2fs
104.46
KB
-rwxr-xr-x
2025-09-21 15:03
tuned
3.87
KB
-rwxr-xr-x
2026-02-22 19:49
tuned-adm
6.68
KB
-rwxr-xr-x
2026-02-22 19:49
udevadm
587.85
KB
-rwxr-xr-x
2026-09-15 22:00
umount.udisks2
15.13
KB
-rwxr-xr-x
2025-10-20 13:58
unbound-anchor
51.67
KB
-rwxr-xr-x
2026-09-16 21:36
unix_chkpwd
23.29
KB
-rwsr-xr-x
2026-09-08 12:43
unix_update
31.33
KB
-rwx------
2026-09-08 12:43
unsquashfs
113.8
KB
-rwxr-xr-x
2024-04-03 13:45
update-alternatives
39.59
KB
-rwxr-xr-x
2025-03-12 10:43
update-pciids
1.72
KB
-rwxr-xr-x
2025-03-12 20:27
useradd
137.84
KB
-rwxr-xr-x
2026-04-08 19:49
userdel
88.84
KB
-rwxr-xr-x
2026-04-08 19:49
usermod
129.66
KB
-rwxr-xr-x
2026-04-08 19:49
validatetrans
15.29
KB
-rwxr-xr-x
2025-03-12 23:36
vdpa
35.88
KB
-rwxr-xr-x
2026-04-05 08:31
vigr
58.16
KB
-rwxr-xr-x
2026-04-08 19:49
vipw
58.16
KB
-rwxr-xr-x
2026-04-08 19:49
virt-what
15.71
KB
-rwxr-xr-x
2025-09-21 11:48
virt-what-cvm
15.32
KB
-rwxr-xr-x
2025-09-21 11:48
visudo
267.27
KB
-rwxr-xr-x
2026-09-21 17:01
vmcore-dmesg
27.3
KB
-rwxr-xr-x
2026-04-08 18:11
vpddecode
19.15
KB
-rwxr-xr-x
2026-04-09 07:32
weak-modules
33.58
KB
-rwxr-xr-x
2025-09-18 11:29
wipefs
39.28
KB
-rwxr-xr-x
2026-04-04 22:15
wpa_cli
135.89
KB
-rwxr-xr-x
2025-03-13 12:42
wpa_passphrase
15.3
KB
-rwxr-xr-x
2025-03-13 12:42
wpa_supplicant
3.1
MB
-rwxr-xr-x
2025-03-13 12:42
xfs_admin
2.13
KB
-rwxr-xr-x
2025-09-21 13:01
xfs_bmap
699
B
-rwxr-xr-x
2025-09-21 13:01
xfs_copy
92.62
KB
-rwxr-xr-x
2025-09-21 13:02
xfs_db
708.08
KB
-rwxr-xr-x
2025-09-21 13:02
xfs_estimate
15.16
KB
-rwxr-xr-x
2025-09-21 13:02
xfs_freeze
804
B
-rwxr-xr-x
2025-09-21 13:01
xfs_fsr
43.51
KB
-rwxr-xr-x
2025-09-21 13:02
xfs_growfs
43.63
KB
-rwxr-xr-x
2025-09-21 13:02
xfs_info
1.27
KB
-rwxr-xr-x
2025-09-21 13:01
xfs_io
202.59
KB
-rwxr-xr-x
2025-09-21 13:02
xfs_logprint
88.26
KB
-rwxr-xr-x
2025-09-21 13:02
xfs_mdrestore
27.28
KB
-rwxr-xr-x
2025-09-21 13:02
xfs_metadump
786
B
-rwxr-xr-x
2025-09-21 13:01
xfs_mkfile
1.02
KB
-rwxr-xr-x
2025-09-21 13:01
xfs_ncheck
689
B
-rwxr-xr-x
2025-09-21 13:01
xfs_quota
92.1
KB
-rwxr-xr-x
2025-09-21 13:02
xfs_repair
686.23
KB
-rwxr-xr-x
2025-09-21 13:02
xfs_rtcp
19.14
KB
-rwxr-xr-x
2025-09-21 13:02
xfs_scrub
116.7
KB
-rwxr-xr-x
2025-09-21 13:02
xfs_scrub_all
5.86
KB
-rwxr-xr-x
2025-09-21 13:01
xfs_spaceman
43.78
KB
-rwxr-xr-x
2025-09-21 13:02
xqmstats
15.33
KB
-rwxr-xr-x
2025-03-12 20:44
xtables-monitor
231.41
KB
-rwxr-xr-x
2025-02-04 03:47
xtables-nft-multi
231.41
KB
-rwxr-xr-x
2025-02-04 03:47
zic
59.63
KB
-rwxr-xr-x
2026-08-03 10:14
zramctl
55.87
KB
-rwxr-xr-x
2026-04-04 22:15
Save
Rename
#!/usr/bin/bash # $Id$ # # Relax-and-Recover # # Relax-and-Recover is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # Relax-and-Recover is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with Relax-and-Recover; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # # Authors: # See https://github.com/rear/rear/graphs/contributors for full list of authors # Usually functions belong to the library scripts (i.e. $SHARE_DIR/lib/*.sh), # but these 2 are exceptions on the rule because the complementary global functions # to get and apply bash flags and options commands are needed from the very beginning # (the usual functions are sourced at "Include functions" below): function get_bash_flags_and_options_commands () { # Output bash commands that set the currently set flags # in reverse ordering to have "set ... xtrace" (i.e. "set +/- x") first # so that this flag is set first via apply_bash_flags_and_options_commands # which results better matching logging output in debugscript mode: set +o | tac | tr '\n' ';' # Output bash commands that set the currently set options: shopt -p | tr '\n' ';' } # This function exists only to provide a syntactically matching counterpart of get_bash_flags_and_options_commands: function apply_bash_flags_and_options_commands () { # Must be called with $1 that is the output of a previous get_bash_flags_and_options_commands: eval "$1" } # At the very beginning save initial bash flags and options in a global readonly variable # so that exactly the initial bash flags and options can be restored if needed via # apply_bash_flags_and_options_commands "$INITIAL_BASH_FLAGS_AND_OPTIONS_COMMANDS" readonly INITIAL_BASH_FLAGS_AND_OPTIONS_COMMANDS="$( get_bash_flags_and_options_commands )" # Enable as needed for development of fail-safe code: # set -ue -o pipefail # set -xue -o pipefail # set -xvue -o pipefail # Cf. the Relax-and-Recover Coding Style # https://github.com/rear/rear/wiki/Coding-Style # that reads (excerpt - dated 18. Nov. 2015): # "TODO Use set -eu to die from unset variables and unhandled errors" # Versioning readonly PRODUCT="Relax-and-Recover" readonly PROGRAM=${0##*/} readonly VERSION=2.6 readonly RELEASE_DATE="2020-06-17" # Where users should report bugs: readonly BUG_REPORT_SITE="https://github.com/rear/rear/issues" # Used in framework-functions.sh to calculate the time spent executing rear: readonly STARTTIME=$SECONDS # Provide the command line options in an array so that other scripts may read them: readonly CMD_OPTS=( "$@" ) # Allow workflows to set the exit code to a different value (not "readonly"): EXIT_CODE=0 # The separated EXIT_FAIL_MESSAGE variable is used to denote a failure exit. # One cannot use EXIT_CODE for that because there are cases where a non-zero exit code # is the intended outcome (e.g. in the 'checklayout' workflow, cf. the end of this script). # Set EXIT_FAIL_MESSAGE to 1 to have an exit failure message by default which is needed # to get a failure message when it exits at an arbitrary place because of 'set -e' # cf. https://github.com/rear/rear/issues/700#issuecomment-327755633 # Before a normal exit EXIT_FAIL_MESSAGE is set to 0 (cf. the end of this script): EXIT_FAIL_MESSAGE=1 # Find out if we're running from checkout REAR_DIR_PREFIX="" readonly SCRIPT_FILE="$( readlink -f $( type -p "$0" || echo "$0" ) )" if test "$SCRIPT_FILE" != "$( readlink -f /usr/sbin/$PROGRAM )" ; then REAR_DIR_PREFIX=${SCRIPT_FILE%/usr/sbin/$PROGRAM} fi readonly REAR_DIR_PREFIX # Program directories - they must be set here. Everything else is then dynamic. # Not yet readonly here because they are set via the /etc/rear/rescue.conf file # in the recovery system that is sourced by the rear command in recover mode # and CONFIG_DIR can also be changed via '-c' command line option: SHARE_DIR="/usr/share/rear" CONFIG_DIR="/etc/rear" VAR_DIR="/var/lib/rear" LOG_DIR="$REAR_DIR_PREFIX/var/log/rear" # Generic global variables that are not meant to be configured by the user # (i.e. that do not belong into usr/share/rear/conf/default.conf), # see https://github.com/rear/rear/issues/678 # and https://github.com/rear/rear/issues/708 # Location of the disklayout.conf file created by savelayout # (no readonly DISKLAYOUT_FILE because it is also set in checklayout-workflow.sh and mkbackuponly-workflow.sh): DISKLAYOUT_FILE="$VAR_DIR/layout/disklayout.conf" # Location of the root of the filesystem tree of the target system # in particular the root of the filesystem tree of the to-be-recovered-system in the recovery system # i.e. the mountpoint in the recovery system where the filesystem tree of the to-be-recovered-system is mounted: readonly TARGET_FS_ROOT="/mnt/local" # Initialize defaults: empty value means "false"/"no": DEBUG="" DEBUGSCRIPTS="" DEBUGSCRIPTS_ARGUMENT="x" DISPENSABLE_OUTPUT_DEV="null" KEEP_BUILD_DIR="" KERNEL_VERSION="" RECOVERY_MODE="" STEPBYSTEP="" SIMULATE="" VERBOSE="" WORKFLOW="" # Parse options help_note_text="Use '$PROGRAM --help' or 'man $PROGRAM' for more information." if ! OPTS="$( getopt -n $PROGRAM -o "c:C:dDhsSvVr:" -l "help,version,debugscripts:" -- "$@" )" ; then echo "$help_note_text" exit 1 fi readonly OPTS eval set -- "$OPTS" while true ; do case "$1" in (-h|--help) WORKFLOW="help" ;; (-V|--version) echo -e "$PRODUCT $VERSION / $RELEASE_DATE" exit 0 ;; (-v) VERBOSE=1 ;; (-c) if [[ "$2" == -* ]] ; then # When the item that follows '-c' starts with a '-' # it is considered to be the next option and not an argument for '-c': echo "-c requires an argument." echo "$help_note_text" exit 1 fi CONFIG_DIR="$2" shift ;; (-C) if [[ "$2" == -* ]] ; then # When the item that follows '-C' starts with a '-' # it is considered to be the next option and not an argument for '-C': echo "-C requires an argument." echo "$help_note_text" exit 1 fi CONFIG_APPEND_FILES="$2" shift ;; (-d) DEBUG=1 VERBOSE=1 ;; (-D) DEBUG=1 VERBOSE=1 DEBUGSCRIPTS=1 ;; (--debugscripts) DEBUG=1 VERBOSE=1 DEBUGSCRIPTS=1 DISPENSABLE_OUTPUT_DEV="stderr" if [[ "$2" == -* ]] ; then # When the item that follows '--debugscripts' starts with a '-' # it is considered to be the next option and not an argument for '--debugscripts': echo "--debugscripts requires an argument." echo "$help_note_text" exit 1 fi DEBUGSCRIPTS_ARGUMENT="$2" shift ;; (-s) SIMULATE=1 VERBOSE=1 ;; (-S) STEPBYSTEP=1 ;; (-r) if [[ "$2" == -* ]] ; then # When the item that follows '-r' starts with a '-' # it is considered to be the next option and not an argument for '-r': echo "-r requires an argument." echo "$help_note_text" exit 1 fi KERNEL_VERSION="$2" shift ;; (--) shift break ;; (-*) echo "$PROGNAME: unrecognized option '$option'" echo "$help_note_text" exit 1 ;; (*) break ;; esac shift done # Set workflow to first command line argument or to "help" as fallback: if test -z "$WORKFLOW" ; then # Usually workflow is now in $1 (after the options and its arguments were shifted above) # but when rear is called without a workflow there exists no $1 here so that # an empty default value is used to avoid 'set -eu' error exit if $1 is unset: if test "${1:-}" ; then # Not "$1" to get rid of compound commands: WORKFLOW=$1 shift else WORKFLOW=help fi fi # Keep the remaining command line arguments to feed to the workflow: ARGS=( "$@" ) # The following workflows are always verbose: case "$WORKFLOW" in (validate|shell|recover|mountonly) VERBOSE=1 ;; esac # Set the variables v and verbose to be used in called programs # that support the '-v' or '--verbose' options like # "cp $v ..." or "rm $verbose ..." and so on: v="" verbose="" if test "$VERBOSE" ; then v="-v" verbose="--verbose" fi # Mark variables that are not meant to be changed later as constants (i.e. readonly). # Exceptions here: # CONFIG_DIR because "rear recover" sets it in /etc/rear/rescue.conf in the recovery system # WORKFLOW because for the udev workflow WORKFLOW is set to the actual workflow # KERNEL_VERSION because if empty it is set when sourcing config files below: readonly ARGS readonly CONFIG_APPEND_FILES readonly DEBUG DEBUGSCRIPTS DEBUGSCRIPTS_ARGUMENT DISPENSABLE_OUTPUT_DEV readonly SIMULATE STEPBYSTEP VERBOSE # The udev workflow is a special case because it is only a wrapper workflow # that calls an actual workflow that is specified as $UDEV_WORKFLOW # (e.g. the default UDEV_WORKFLOW is "mkrescue" in default.conf) # and then WORKFLOW is set to the actual workflow in udev-workflow.sh # so that WORKFLOW cannot be set readonly for the udev workflow: test "$WORKFLOW" = "udev" || readonly WORKFLOW # Make sure we have the necessary paths (eg. in cron), /sbin will be the first path to search. # some needed binaries are in /lib/udev or /usr/lib/udev for path in /usr/bin /bin /usr/sbin /sbin ; do case ":$PATH:" in (*:"$path":*) ;; (*) test -d "$path" && PATH=$path:$PATH ;; esac done # No readonly PATH so that it can be later extended if needed # (e.g. to have third-party backup/restore tools available via PATH): PATH=$PATH:/lib/udev:/usr/lib/udev # ReaR must run as 'root' (i.e. abort if effective user ID is not 0): if test "$( id --user )" != "0" ; then echo "ERROR: $PRODUCT needs 'root' privileges (effective user ID is not 0)" >&2 exit 1 fi # Set some bash options: # With nullglob set when e.g. for foo*bar no file matches are found, then foo*bar is removed # (e.g. "ls foo*bar" becomes plain "ls" without "foo*bar: No such file or directory" error). # The extglob shell option enables several extended pattern matching operators. shopt -s nullglob extglob # Save the current default bash flags and options in a global readonly variable # so that exactly the default bash flags and options can be restored if needed via # apply_bash_flags_and_options_commands "$DEFAULT_BASH_FLAGS_AND_OPTIONS_COMMANDS" readonly DEFAULT_BASH_FLAGS_AND_OPTIONS_COMMANDS="$( get_bash_flags_and_options_commands )" # Forget all remembered full pathnames of commands: hash -r # Make sure that we use only English: export LC_CTYPE=C LC_ALL=C LANG=C # Include default config before the RUNTIME_LOGFILE value is set because # setting the right RUNTIME_LOGFILE value requires values from default.conf # in particular the default LOGFILE value and the values of the # LOCKLESS_WORKFLOWS and SIMULTANEOUS_RUNNABLE_WORKFLOWS arrays: if ! source $SHARE_DIR/conf/default.conf ; then echo -e "ERROR: BUG in $PRODUCT\nFailed to source $SHARE_DIR/conf/default.conf\nPlease report it at $BUG_REPORT_SITE" >&2 exit 1 fi # Use RUNTIME_LOGFILE for the logfile that is actually used during runtime # so that the user can specify a different LOGFILE in his local.conf file. # During runtime use only the actually used RUNTIME_LOGFILE value. # By default RUNTIME_LOGFILE is the LOGFILE from default.conf: RUNTIME_LOGFILE="$LOGFILE" # Set the right RUNTIME_LOGFILE value depending on whether or not # this currently running instance can run simultaneously with another instance: can_run_simultaneously="" # LOCKLESS_WORKFLOWS can run simultaneously with another instance by using LOGFILE.lockless. # FIXME: Only one lockless workflow can run otherwise the same LOGFILE.lockless # would be used by more than one simultaneously running lockless workflows: for lockless_workflow in "${LOCKLESS_WORKFLOWS[@]}" ; do if test "$WORKFLOW" = "$lockless_workflow" ; then RUNTIME_LOGFILE="$LOGFILE.lockless" can_run_simultaneously="yes" break fi done # SIMULTANEOUS_RUNNABLE_WORKFLOWS are allowed to run simultaneously # but cannot use LOGFILE.lockless instead they get a LOGFILE with PID # see https://github.com/rear/rear/issues/1102 # When a workflow is both in LOCKLESS_WORKFLOWS and in SIMULTANEOUS_RUNNABLE_WORKFLOWS # its right LOGFILE value is the one for SIMULTANEOUS_RUNNABLE_WORKFLOWS: for simultaneous_runnable_workflow in "${SIMULTANEOUS_RUNNABLE_WORKFLOWS[@]}" ; do if test "$WORKFLOW" = "$simultaneous_runnable_workflow" ; then # Simultaneously runnable workflows require unique logfile names # so that the PID is interposed in the LOGFILE value from default.conf # which is used as RUNTIME_LOGFILE while the workflow is running # and at the end it gets copied to a possibly used-defined LOGFILE. # The logfile_suffix also works for logfile names without '.*' suffix # (in this case ${LOGFILE##*.} returns the whole $LOGFILE value): logfile_suffix=$( test "${LOGFILE##*.}" = "$LOGFILE" && echo 'log' || echo "${LOGFILE##*.}" ) RUNTIME_LOGFILE="${LOGFILE%.*}.$$.$logfile_suffix" can_run_simultaneously="yes" break fi done # The log file that is actually used during runtime must not be changed: readonly RUNTIME_LOGFILE # When this currently running instance cannot run simultaneously with another instance # test that this currently running instance does not run simultaneously with another instance: if ! test "$can_run_simultaneously" ; then # In this case pidof is needed to test what running instances there are: if ! type pidof 1>/dev/null ; then echo "ERROR: Required program 'pidof' missing, please check your PATH" >&2 exit 1 fi # For unknown reasons '-o %PPID' does not work for pidof at least in SLES11 # so that a manual test is done to find out if another pid != $$ is running: for pid in $( pidof -x "$SCRIPT_FILE" ) ; do if test "$pid" != $$ ; then echo "ERROR: $PROGRAM is already running, not starting again" >&2 exit 1 fi done fi # Source usr/share/rear/lib/_input-output-functions.sh because therein # the original STDIN STDOUT and STDERR file descriptors are saved as fd6 fd7 and fd8 # so that ReaR functions for actually intended user messages can use fd7 and fd8 # to show messages to the user regardless where to STDOUT and STDERR are redirected # and fd6 to get input from the user regardless where to STDIN is redirected: if ! source $SHARE_DIR/lib/_input-output-functions.sh ; then echo -e "ERROR: BUG in $PRODUCT\nFailed to source $SHARE_DIR/lib/_input-output-functions.sh\nPlease report it at $BUG_REPORT_SITE" >&2 exit 1 fi # Used to determine whether TMPDIR has been changed in user config. # Save the current value to detect changes. saved_tmpdir="${TMPDIR-}" # Keep old log file: test -r "$RUNTIME_LOGFILE" && mv -f "$RUNTIME_LOGFILE" "$RUNTIME_LOGFILE".old 2>/dev/null # Start logging: mkdir -p $LOG_DIR || echo "ERROR: Could not create $LOG_DIR" >&2 cat /dev/null >"$RUNTIME_LOGFILE" # Redirect both STDOUT and STDERR into the log file. # To be more on the safe side append to the log file '>>' instead of plain writing to it '>' # because when a program (bash in this case) is plain writing to the log file it can overwrite # output of a possibly simultaneously running process that likes to append to the log file # (e.g. when a background process runs that also uses the ReaR log file for logging): exec 2>>"$RUNTIME_LOGFILE" # Make stdout the same what stderr already is. # This keeps strict ordering of stdout and stderr outputs # because now both stdout and stderr use one same file descriptor. # The redirection of stdout into the log file was postponed for ReaR v2.2 # see https://github.com/rear/rear/issues/1398#issuecomment-315318878 # for ReaR v2.3 redirection of stdout into the log file is re-enabled: exec 1>&2 # Include functions after RUNTIME_LOGFILE is set and readonly # so that functions can use a fixed RUNTIME_LOGFILE value: for script in $SHARE_DIR/lib/[a-z]*.sh ; do source $script || BugError "Failed to source $script" done # Show initial startup messages: if test "$WORKFLOW" != "help" ; then LogPrint "$PRODUCT $VERSION / $RELEASE_DATE" LogPrint "Running $PROGRAM $WORKFLOW (PID $MASTER_PID)" Log "Command line options: $0 ${CMD_OPTS[@]}" LogPrint "Using log file: $RUNTIME_LOGFILE" fi # In DEBUG mode keep by default the build area but that can be overridden in user config files # therefore no readonly KEEP_BUILD_DIR (it is also set to 1 in build/default/990_verify_rootfs.sh): test "$DEBUG" && KEEP_BUILD_DIR=1 || true # Check if we are in recovery mode: test -e "/etc/rear-release" && RECOVERY_MODE="y" || true readonly RECOVERY_MODE test "$SIMULATE" && LogPrint "Simulation mode activated, Relax-and-Recover base directory: $SHARE_DIR" || true if test "$DEBUGSCRIPTS_ARGUMENT" ; then Debug "Current set of flags is '$-'" Debug "The debugscripts flags are '$DEBUGSCRIPTS_ARGUMENT'" fi # All workflows need to read the configurations first. # Combine configuration files: Debug "Combining configuration files" # Use this file to manually override the OS detection: test -d "$CONFIG_DIR" || Error "Configuration directory $CONFIG_DIR is not a directory" if test -r "$CONFIG_DIR/os.conf" ; then Source "$CONFIG_DIR/os.conf" || Error "Failed to Source $CONFIG_DIR/os.conf" fi if test -r "$CONFIG_DIR/$WORKFLOW.conf" ; then Source "$CONFIG_DIR/$WORKFLOW.conf" || Error "Failed to Source $CONFIG_DIR/$WORKFLOW.conf" fi SetOSVendorAndVersion # Distribution configuration files: for config in "$ARCH" "$OS" \ "$OS_MASTER_VENDOR" "$OS_MASTER_VENDOR_ARCH" "$OS_MASTER_VENDOR_VERSION" "$OS_MASTER_VENDOR_VERSION_ARCH" \ "$OS_VENDOR" "$OS_VENDOR_ARCH" "$OS_VENDOR_VERSION" "$OS_VENDOR_VERSION_ARCH" ; do if test -r "$SHARE_DIR/conf/$config.conf" ; then Source "$SHARE_DIR/conf/$config.conf" || BugError "Failed to Source $SHARE_DIR/conf/$config.conf" fi done # User configuration files, last thing is to overwrite variables if we are in the rescue system: for config in site local rescue ; do if test -r "$CONFIG_DIR/$config.conf" ; then # Delete all characters except '\r' and error out if the resulting string is not empty: test "$( tr -d -c '\r' < $CONFIG_DIR/$config.conf )" && Error "Carriage return character in $CONFIG_DIR/$config.conf (perhaps DOS or Mac format)" Source "$CONFIG_DIR/$config.conf" || Error "Failed to Source $CONFIG_DIR/$config.conf" fi if [ "$config" == local ] ; then # changing TMPDIR in rescue.conf is expected for now, see # rescue/GNU/Linux/600_unset_TMPDIR_in_rescue_conf.sh, # so perform the check after reading local.conf but before rescue.conf if [ "$saved_tmpdir" != "${TMPDIR-}" ] ; then LogPrintError "Warning: Setting TMPDIR in a configuration file is deprecated. To specify a working area directory prefix, export TMPDIR before executing '$PROGRAM'" fi fi done # Finally source additional configuration files if specified on the command line: if test "$CONFIG_APPEND_FILES" ; then # Treat missing additional config files (almost) same as other missing config files # which means that missing additional config files do not let ReaR abort with an Error # but in contrast to other missing config files missing additional config files # are reported to the user via 'LogPrintError' so that the user is at least informed # if what he requested via the '-C' command line option cannot be fulfilled. # An intended positive side-effect when missing additional config files are no Error # is that then it also works (not relly cleanly but it works) for DRLM_MANAGED=y # which requires that missing local config files must not let ReaR abort with an Error # because the needed config files get later downloaded from the DRLM server and applied # (cf. the drlm_import_runtime_config function in lib/drlm-functions.sh) # for details see https://github.com/rear/rear/issues/1229 for config_append_file in $CONFIG_APPEND_FILES ; do # If what is specified on the command line starts with '/' an absolute path is meant # otherwise what is specified on the command line means a file in CONFIG_DIR. # Files in CONFIG_DIR get automatically copied into the recovery system but # other files are added to COPY_AS_IS to get them copied into the recovery system: case "$config_append_file" in (/*) config_append_file_path="$config_append_file" # If "-C foo" was specified on the command line but 'foo' does not exist # try if 'foo.conf' exists and if yes, use that: if test -r "$config_append_file_path" ; then COPY_AS_IS+=( "$config_append_file_path" ) else if test -r "$config_append_file_path.conf" ; then COPY_AS_IS+=( "$config_append_file_path.conf" ) else LogPrintError "There is '-C $config_append_file' but neither '$config_append_file_path' nor '$config_append_file_path.conf' can be read." fi fi ;; (*) config_append_file_path="$CONFIG_DIR/$config_append_file" ;; esac # If "-C foo" was specified on the command line but 'foo' does not exist # try if 'foo.conf' exists and if yes, use that: if test -r "$config_append_file_path" ; then LogPrint "Sourcing additional configuration file '$config_append_file_path'" Source "$config_append_file_path" || Error "Failed to Source $config_append_file_path" else if test -r "$config_append_file_path.conf" ; then LogPrint "Sourcing additional configuration file '$config_append_file_path.conf'" Source "$config_append_file_path.conf" || Error "Failed to Source $config_append_file_path.conf" else LogPrintError "There is '-C $config_append_file' but neither '$config_append_file_path' nor '$config_append_file_path.conf' can be read." fi fi done fi # Now SHARE_DIR CONFIG_DIR VAR_DIR LOG_DIR and KERNEL_VERSION should be set to a fixed value: readonly SHARE_DIR CONFIG_DIR VAR_DIR LOG_DIR KERNEL_VERSION # Enable progress subsystem only in verbose mode, set some stuff that others can use: if test "$VERBOSE" ; then source $SHARE_DIR/lib/progresssubsystem.nosh || BugError "Failed to source $SHARE_DIR/lib/progresssubsystem.nosh" fi SourceStage "init" readonly VERSION_INFO=" $PRODUCT $VERSION / $RELEASE_DATE $PRODUCT comes with ABSOLUTELY NO WARRANTY; for details see the GNU General Public License at: http://www.gnu.org/licenses/gpl.html Host $( uname -n ) using Backup $BACKUP and Output $OUTPUT Build date: $( date -R ) " if test "$WORKFLOW" != "help" ; then # Create temporary work area and register removal exit task: BUILD_DIR="$( mktemp -d -t rear.XXXXXXXXXXXXXXX || Error "Could not create build area '$BUILD_DIR'" )" # Since 'mktemp' doesn't always return a path under /tmp, the build # directory has always to be excluded for safety BACKUP_PROG_EXCLUDE+=( "$BUILD_DIR" ) QuietAddExitTask cleanup_build_area_and_end_program Log "Using build area '$BUILD_DIR'" ROOTFS_DIR=$BUILD_DIR/rootfs TMP_DIR=$BUILD_DIR/tmp mkdir -p $v $ROOTFS_DIR >&2 || Error "Could not create $ROOTFS_DIR" mkdir -p $v $TMP_DIR >&2 || Error "Could not create $TMP_DIR" fi # Check for and run the requested workflow: if has_binary WORKFLOW_$WORKFLOW ; then Log "Running $WORKFLOW workflow" # There could be no ARGS[@] which means it would be an unbound variable so that # an empty default is used here to avoid an error exit if 'set -eu' is used: WORKFLOW_$WORKFLOW "${ARGS[@]:-}" Log "Finished running $WORKFLOW workflow" else LogPrintError "ERROR: The specified command '$WORKFLOW' does not exist!" EXIT_CODE=1 fi # Usually RUNTIME_LOGFILE=/var/log/rear/rear-$HOSTNAME.log # The RUNTIME_LOGFILE name is set above from LOGFILE in default.conf # but later user config files are sourced where LOGFILE can be set different # so that the user config LOGFILE is used as final logfile name: if test "$RUNTIME_LOGFILE" != "$LOGFILE" ; then test "$WORKFLOW" != "help" && LogPrint "Saving $RUNTIME_LOGFILE as $LOGFILE" cat "$RUNTIME_LOGFILE" > "$LOGFILE" fi # When this point is reached, the workflow is done without a real error because # for real errors one of the Error functions should be called that kills rear and # then the exit code is usually 143 = 128 + 15 (15 = SIGTERM from the USR1 trap) # and the Error function results an "ERROR: ..." syslog message. # Set EXIT_FAIL_MESSAGE to 0 to avoid a false exit failure message: EXIT_FAIL_MESSAGE=0 # There should be no syslog message for the help workflow: if test "$WORKFLOW" != "help" ; then if test $EXIT_CODE -eq 0 ; then LogToSyslog "$PROGRAM $WORKFLOW finished with zero exit code" else if test "checklayout" = "$WORKFLOW" -a $EXIT_CODE -eq 1 ; then # The checklayout workflow is special because it sets EXIT_CODE=1 # when the disk layout has changed or when configuration files have changed # but that exit code 1 is no error but meant as a signal that things have changed # which require a new ISO image so that users can run "rear checklayout || rear mkrescue" # see https://github.com/rear/rear/issues/564 LogToSyslog "$PROGRAM checklayout finished with exit code 1 (layout or config changed)" else LogToSyslog "$PROGRAM $WORKFLOW failed with exit code $EXIT_CODE" fi fi fi exit $EXIT_CODE # vim: set et ts=4 sw=4: