# nama variabel bisa berisi huruf besar, kecil, digit, underscore. tidak boleh ada spasi:
user@host:~$ VARIABLE_NAME=value
# contoh:
user@host:~$ COUNT=40
user@host:~$ first_name=John
user@host:~$ full_name='John Smith'
user@host:~$ file1=/tmp/abc
user@host:~$ _ID=Training
# string
user@host:~$ bare=This\ string\ escapes\ all\ spaces.
user@host:~$ double_quote="This is an expandable string where the ${variable} variable would be replaced."
user@host:~$ single_quote='This is a literal string with special characters like the $ character.'
# number
user@host:~$ five=5
user@host:~$ ten=10
user@host:~$ fifteen=$((five + ten))
# array
user@host:~$ colors=('red' 'green' 'blue')
user@host:~$ COUNT=40
user@host:~$ echo COUNT
COUNT
user@host:~$ echo $COUNT
40
user@host:~$ echo "The count is: $COUNT"
The count is: 40
# ekspansi variabel di string dengan petik tunggal diabaikan
user@host:~$ echo 'The count is: $COUNT'
The count is: $COUNT
user@host:~$ echo "Repeat $COUNTx"
Repeat
user@host:~$ echo "Repeat ${COUNT}x"
Repeat 40x
# contoh array
user@host:~$ colors=("red" "green" "blue")
user@host:~$ echo "The sky is ${colors[2]}"
The sky is blue
# akses semua elemen di array dengan karakter @ atau *
user@host:~$ echo "The human eye can see the following colors: ${colors[@]}"
The human eye can see the following colors: red green blue
Variabel
HISTFILEmenentukan file mana yang akan digunakan untuk menyimpan riwayat shell, dan secara default adalah file~/.bash_history.Variabel
HISTFILESIZEmenentukan berapa banyak perintah yang akan disimpan dalam file tersebut dari riwayat.Variabel
HISTTIMEFORMATmendefinisikan format stempel waktu untuk setiap perintah dalam riwayat. Variabel ini tidak ada secara default.
# menampilkan histori kapanpun
user@host:~$ history
...output omitted...
6 ls /etc
7 uptime
# atur timestamp
user@host:~$ HISTTIMEFORMAT="%F %T "
# verifikasi
user@host:~$ history
...output omitted...
6 2022-05-03 04:58:11 ls /etc
7 2022-05-03 04:58:13 uptime
Contoh lain adalah variabel PS1, yang mengatur tampilan prompt shell.
# contoh mengubah tampilan bash cmd
user@host:~$ PS1="bash\$ "
bash$
bash$ PS1="[\u@\h \W]\$ "
[user@host ~]$
\u menampilkan nama pengguna dari pengguna saat ini.\h menampilkan nama host hingga karakter titik pertama (.).\W menampilkan nama dasar variabel $PWD, dan variabel $HOME disingkat dengan tilde (~).\$ menampilkan # jika UID efektif adalah 0; jika tidak, string perintah ini menampilkan $.# menampilkan semua environmen variabel
user@host:~$ env
...output omitted...
LANG=en_US.UTF-8
HISTCONTROL=ignoredups
HOSTNAME=host.example.com
XDG_SESSION_ID=4
...output omitted...
# contoh mengatur vim sebagai teks editor
user@host:~$ EDITOR=vim
user@host:~$ export EDITOR
# bisa juga langsung
user@host:~$ export EDITOR=vim
# Dalam contoh berikut, periksa bahwa perintah date menggunakan format en_US.UTF-8:
user@host:~$ date
Tue May 27 17:04:37 UTC 2025
user@host:~$ export LANG=fr_FR.UTF-8
user@host:~$ date
mar. 27 mai 2025 17:04:51 UTC
# environmen variabel PATH berisi daftar direktori yang dipisahkan dengan titik dua yang menentukan di mana perintah yang dapat dieksekusi berada:
user@host:~$ echo $PATH
/home/user/.local/bin:/home/user/bin:/usr/share/Modules/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin
user@host:~$ export PATH=${PATH}:/home/user/sbin
# contoh menambahkan direktori /home/user/sbin ke variabel PATH
user@host:~$ export PATH=${PATH}:/home/user/sbin
user@host:~$ export EDITOR=nano
Misalnya, untuk mengganti editor default saat login lewat SSH, ubah variabel EDITOR di file ~/.bash_profile:
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
export EDITOR=nano
Cara terbaik untuk menyesuaikan pengaturan yang mempengaruhi semua akun pengguna adalah dengan membuat file dengan ekstensi .sh berisi perubahan tersebut, dan menambahkan file ini ke direktori /etc/profile.d. Untuk membuat file di direktori /etc/profile.d, masuklah sebagai pengguna root.
user@host:~$ alias hello='echo "Hello, this is a long string."'
user@host:~$ hello
Hello, this is a long string.
user@host:~$ echo $file1
/tmp/tmp.z9pXW0HqcC
user@host:~$ unset file1
# unexport
user@host:~$ export -n PS1
# unset alias
user@host:~$ unalias hello
Baris pertama dari sebuah file skrip dimulai dengan notasi #!, yang biasa disebut shebang atau hash-bang, dari nama dua karakter itu, sharp atau hash dan bang.
#!/usr/bin/bash
Skrip shell harus memiliki izin eksekusi. Gunakan perintah chmod dan chown untuk modifikasi. Jika skrip ada di list env PATH maka bisa langsung dijalankan dengan nama skripnya. Jika tidak jalankan skrip dari direktori saat ini, ./scriptname.
user@host:~$ which hello
~/bin/hello
user@host:~$ echo $PATH
/home/user/.local/bin:/home/user/bin:/sbin:/bin:/usr/sbin:/usr/bin:...
Jika lebih dari 1 digit harus pakai kurung kurawal. Perintah bawaan
setdigunakan untuk menukar nilai parameter posisi 3 dan 4. Perlu dicatat bahwa parameter posisi 5 sampai 10 tidak dirujuk dan akan dihapus sebagai akibatnya.
#!/usr/bin/bash
echo "Parameter 0: $0"
echo "Parameter 1: $1"
echo "Parameter 2: $2"
echo "Parameter 10 (incorrect): $10"
echo "Parameter 10 (correct): ${10}"
set -- "$1" "$2" "$4" "$3"
echo
echo "Parameter 3 (after set): $3"
echo "Parameter 4 (after set): $4"
echo "Parameter 10 (after set): ${10}"
# output
user@host:~$ ./params.sh 1st 2nd 3rd 4th 5th 6th 7th 8th 9th 10th
Parameter 0: ./params.sh
Parameter 1: 1st
Parameter 2: 2nd
Parameter 10 (incorrect): 1st0
Parameter 10 (correct): 10th
Parameter 3 (after set): 4th
Parameter 4 (after set): 3rd
Parameter 10 (after set): 5
Gunakan karakter backslash (), tanda kutip tunggal (‘’), atau tanda kutip ganda (“”) untuk menghapus (atau menghindari) makna khusus dari karakter-karakter spesial.
Misalnya, untuk menggunakan perintah echo agar menampilkan string literal # bukan komentar, karakter # harus tidak diartikan sebagai komentar.
user@host:~$ echo # not a comment
user@host:~$ echo \# not a comment
# not a comment
user@host:~$ echo # not a comment #
user@host:~$ echo \# not a comment #
# not a comment
user@host:~$ echo \# not a comment \#
# not a comment #
user@host:~$ echo '# not a comment #'
# not a comment #
user@host:~$ var=$(hostname -s); echo $var
host
user@host:~$ echo "***** hostname is ${var} *****"
***** hostname is host *****
user@host:~$ echo "Will variable $var evaluate to $(hostname -s)?"
Will variable host evaluate to host?
user@host:~$ echo "\"Hello, world\""
"Hello, world"
user@host:~$ echo '"Hello, world"'
"Hello, world"
user@host:~$ echo 'Will variable $var evaluate to $(hostname -s)?'
Will variable $var evaluate to $(hostname -s)?
user@host:~$ cat ~/bin/hello
#!/usr/bin/bash
echo "Hello, world"
# coba jalankan
user@host:~$ hello
Hello, world
# contoh skrip redirect STDERR
user@host:~$ cat ~/bin/hello
#!/usr/bin/bash
echo "Hello, world"
echo "ERROR: Houston, we have a problem." >&2
# coba jalankan
user@host:~$ hello 2> hello.log
Hello, world
user@host:~$ cat hello.log
ERROR: Houston, we have a problem.
# sintax dasar
for VARIABLE in LIST; do
COMMAND VARIABLE
done
# contoh 1
user@host:~$ for HOST in host1 host2 host3; do echo $HOST; done
host1
host2
host3
# contoh 2
user@host:~$ for HOST in host{1,2,3}; do echo $HOST; done
host1
host2
host3
# contoh 3
user@host:~$ for HOST in host{1..3}; do echo $HOST; done
host1
host2
host3
# contoh 4
user@host:~$ for FILE in file{a..c}; do ls $FILE; done
filea
fileb
filec
# Gunakan perulangan for untuk mencetak paket kernel yang terpasang beserta tanggalnya dalam sebuah string:
user@host:~$ for PACKAGE in $(rpm -qa | grep kernel); \
do echo "$PACKAGE was installed on \
$(date -d @$(rpm -q --qf "%{INSTALLTIME}\n" $PACKAGE))"; done
kernel-tools-libs-5.14.0-70.2.1.el9_0.x86_64 was installed on Thu...
kernel-tools-5.14.0-70.2.1.el9_0.x86_64 was installed on Thu Mar...
kernel-core-5.14.0-70.2.1.el9_0.x86_64 was installed on Thu Mar...
kernel-modules-5.14.0-70.2.1.el9_0.x86_64 was installed on Thu...
kernel-5.14.0-70.2.1.el9_0.x86_64 was installed on Thu Mar 24...
# menampilkan bilangan genap
user@host:~$ for EVEN in $(seq 2 2 10); do echo "$EVEN"; done
2
4
6
8
10
Kode keluar adalah nilai dari 0 sampai 255 yang menunjukkan bagaimana sebuah proses selesai. Semua perintah menghasilkan kode keluar setelah selesai.
# Skrip berikut mengembalikan kode keluar 0 saat berhasil dijalankan:
[user@host bin]$ cat hello
#!/usr/bin/bash
echo "Hello, world"
exit 0
# ambil kode keluar dari perintah terakhir dari variabel bawaan $?:
[user@host bin]$ echo $?
0
# Perintah /bin/true selalu mengembalikan kode keluar 0.
[user@host bin]$ /bin/true
[user@host bin]$ echo $?
0
# Perintah /bin/false selalu mengembalikan kode keluar 1.
[user@host bin]$ /bin/false
[user@host bin]$ echo $?
1
Buat pernyataan bersyarat dengan membandingkan nilai menggunakan operator seperti lebih besar dari (
-gt), kurang dari (-lt), sama dengan (-eq), atau tidak sama dengan (-ne). Selain itu juga bisa memeriksa status lain, seperti apakah file biasa (-f) atau direktori (-d) ada, atau apakah pengguna saat ini punya izin baca (-r).
user@host:~$ test 1 -gt 0 ; echo $?
0
user@host:~$ test 0 -gt 1 ; echo $?
1
user@host:~$ [[ 1 -eq 1 ]]; echo $?
0
user@host:~$ [[ 1 -ne 1 ]]; echo $?
1
user@host:~$ [[ 8 -gt 2 ]]; echo $?
0
user@host:~$ [[ 2 -ge 2 ]]; echo $?
0
user@host:~$ [[ 2 -lt 2 ]]; echo $?
1
user@host:~$ [[ abc = abc ]]; echo $?
0
user@host:~$ [[ abc == def ]]; echo $?
1
user@host:~$ [[ abc != def ]]; echo $?
0
# (-z) artinya zero length
user@host:~$ STRING=''; [[ -z "$STRING" ]]; echo $?
0
# (-n) artinya non-zero length
user@host:~$ STRING='abc'; [[ -n "$STRING" ]]; echo $?
0
Perulangan while:
# sintax dasar
while <CONDITION>; do
<STATEMENT>
...
<STATEMENT>
done
# contoh penggunaan
user@host:~$ x=1; while [[ $x -le 5 ]]; do
echo "x is $x"
x=$((x + 1))
done; echo "Finished"
x is 1
x is 2
x is 3
x is 4
x is 5
Finished
Perulangan until:
# sintax dasar
until <CONDITION>; do
<STATEMENT>
...
<STATEMENT>
done
# contoh penggunaan
user@host:~$ x=5; until [[ $x -lt 1 ]]; do
echo "x is $x"
x=$((x - 1))
done; echo "Finished"
x is 5
x is 4
x is 3
x is 2
x is 1
Finished
# sintax dasar
if <CONDITION>; then
<STATEMENT>
...
<STATEMENT>
fi
# contoh penggunaan
user@host:~$ systemctl is-active psacct > /dev/null 2>&1
user@host:~$ if [[ $? -ne 0 ]]; then sudo systemctl start psacct; fi
# sintax dasar
if <CONDITION>; then
<STATEMENT>
...
<STATEMENT>
else
<STATEMENT>
...
<STATEMENT>
fi
# contoh penggunaan
user@host:~$ systemctl is-active psacct > /dev/null 2>&1
user@host:~$ if [[ $? -ne 0 ]]; then
sudo systemctl start psacct
else
sudo systemctl stop psacct
fi
# sintax dasar
if <CONDITION>; then
<STATEMENT>
...
<STATEMENT>
elif <CONDITION>; then
<STATEMENT>
...
<STATEMENT>
else
<STATEMENT>
...
<STATEMENT>
fi
# contoh penggunaan
user@host:~$ systemctl is-active mariadb > /dev/null 2>&1
user@host:~$ MARIADB_ACTIVE=$?
user@host:~$ sudo systemctl is-active postgresql > /dev/null 2>&1
user@host:~$ POSTGRESQL_ACTIVE=$?
user@host:~$ if [[ "$MARIADB_ACTIVE" -eq 0 ]]; then
mysql
elif [[ "$POSTGRESQL_ACTIVE" -eq 0 ]]; then
psql
else
sqlite3
fi
Regular Expressions menyediakan mekanisme pencocokan pola untuk menemukan konten tertentu. Perintah grep, less, dan vim adalah beberapa perintah yang bisa menggunakan Regular Expressions.
# mencari di file berikut untuk semua kemunculan pola "cat":
cat
dog
concatenate
dogma
category
educated
boondoggle
vindication
chilidog
# String "cat" merupakan padanan persis dari karakter "c", diikuti oleh karakter "a" dan "t" tanpa karakter lain di antaranya.
# Pencarian dalam file menggunakan string "cat" sebagai ekspresi reguler menghasilkan kecocokan berikut:
cat
concatenate
category
educated
vindication
# Untuk mencocokkan hanya di awal baris, gunakan karakter topi (^). Untuk mencocokkan hanya di akhir baris, gunakan tanda dolar ($).
# awal: ^cat
cat
category
# ahir: dog$
dog
chilidog
# awal dan ahir: ^cat$
cat
| Salah satu perbedaan antara Regular Expressions dasar dan Regular Expressions yang diperluas terletak pada perilaku karakter khusus | , +, ?, (, ), {, dan }. Dalam sintaks Regular Expressions dasar, karakter-karakter ini memiliki arti khusus hanya jika diawali dengan karakter garis miring terbalik . Dalam sintaks Regular Expressions yang diperluas, kebalikannya: karakter-karakter ini memiliki arti khusus kecuali jika diawali dengan karakter garis miring terbalik. |
Perbedaan kecil lainnya berlaku pada cara penanganan karakter ^, $, dan *.
. mencocokkan satu karakter apapun. Misalnya: c.t, yang cocok bisa cat, cbt, cct, dll. Contoh kecocokan mungkin termasuk concatenate, vindication, dan c$t.[] mencocokkan satu karakter di dalam kurung. Misalnya c[asd]t, yang cocook adalah cat, cst, cdt.* mencocokkan 0 atau lebih karakter apapun. Misalnya c.*t, yang cocok ct, cat, culvert, coat, dll.{} mencocokkan sesuai jumlah yang didefiniskan didalam kurung kurawal. Misalnya c.{2}t, yang cocok coat, cuut, cart, dll.| Sintaks Dasar | Sintaks Extended | Deskripsi |
|---|---|---|
. |
Tanda titik (.) mencocokkan satu karakter apa pun. | |
? |
Item sebelumnya bersifat opsional dan dicocokkan paling banyak satu kali. | |
* |
Item sebelumnya dicocokkan nol kali atau lebih. | |
\+ |
Item sebelumnya dicocokkan satu kali atau lebih. | |
\{n\} |
{n} |
Item sebelumnya dicocokkan tepat n kali. |
\{n,\} |
{n,} |
Item sebelumnya dicocokkan n kali atau lebih. |
\{,m\} |
{,m} |
Item sebelumnya dicocokkan paling banyak m kali. |
\{n,m\} |
{n,m} |
Item sebelumnya dicocokkan setidaknya n kali, tetapi tidak lebih dari m kali. |
[:alnum:] |
Karakter alfanumerik: [:alpha:] dan [:digit:]; dalam locale ‘C’ dan pengkodean ASCII, ekspresi ini sama dengan [0-9A-Za-z]. |
|
[:alpha:] |
Karakter alfabet: [:lower:] dan [:upper:]; dalam locale ‘C’ dan pengkodean ASCII, ekspresi ini sama dengan [A-Za-z]. |
|
[:blank:] |
Karakter kosong: spasi dan tab. | |
[:cntrl:] |
Karakter kontrol. Dalam ASCII, karakter ini memiliki kode oktal 000 hingga 037, dan 177 (DEL). | |
[:digit:] |
Digit: 0 1 2 3 4 5 6 7 8 9. | |
[:graph:] |
Karakter grafis: [:alnum:] dan [:punct:]. |
|
[:lower:] |
Huruf kecil; dalam locale ‘C’ dan pengkodean ASCII: a b c d e f g h i j k l m n o p q r s t u v w x y z. | |
[:print:] |
Karakter yang dapat dicetak: [:alnum:], [:punct:], dan spasi. |
|
[:punct:] |
Karakter tanda baca; dalam locale ‘C’ dan pengkodean ASCII: ! " # $ % & ' ( ) * + , - . / : ; < = > ? @ [ \ ] ^ _ { | } ~. |
|
[:space:] |
Karakter spasi; dalam locale ‘C’, meliputi tab, newline, vertical tab, form feed, carriage return, dan spasi. | |
[:upper:] |
Huruf besar; dalam locale ‘C’ dan pengkodean ASCII: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z. | |
[:xdigit:] |
Digit heksadesimal: 0 1 2 3 4 5 6 7 8 9 A B C D E F a b c d e f. | |
\b |
Mencocokkan string kosong di awal atau akhir kata. | |
\B |
Mencocokkan string kosong dengan syarat tidak di awal atau akhir kata. | |
\< |
Mencocokkan string kosong di awal kata. | |
\> |
Mencocokkan string kosong di akhir kata. | |
\w |
Mencocokkan konstituen kata. Sinonim untuk [_[:alnum:]]. |
|
\W |
Mencocokkan non-konstituen kata. Sinonim untuk [^_[:alnum:]]. |
|
\s |
Mencocokkan spasi putih (white space). Sinonim untuk [[:space:]]. |
|
\S |
Mencocokkan non-spasi putih. Sinonim untuk [^[:space:]]. |
user@host:~$ grep '^computer' /usr/share/dict/words
computer
computerese
computerise
computerite
computerizable
computerization
computerize
computerized
computerizes
root@host:~# ps aux | grep chrony
chrony 915 0.0 0.0 10140 2516 ? S 20:19 0:00 /usr/sbin/chronyd -F 2
root 2297 0.0 0.0 228220 1936 pts/1 S+ 20:24 0:00 grep --color=auto chrony
| Opsi | Fungsi |
|---|---|
-i |
Menggunakan ekspresi reguler yang diberikan dan tidak menerapkan kepekaan huruf besar/kecil (case-insensitive). |
-v |
Menampilkan hanya baris yang tidak mengandung kecocokan dengan ekspresi reguler. |
-r |
Mencari data yang cocok dengan ekspresi reguler secara rekursif dalam sekelompok file atau direktori. |
-A NUMBER |
Menampilkan NUMBER baris setelah kecocokan ekspresi reguler. |
-B NUMBER |
Menampilkan NUMBER baris sebelum kecocokan ekspresi reguler. |
-e |
Jika beberapa opsi -e digunakan, maka beberapa ekspresi reguler dapat diberikan dan digunakan dengan logika OR. |
-E |
Menggunakan sintaks ekspresi reguler extended (diperluas) sebagai pengganti basic saat memproses ekspresi reguler yang diberikan. |
# pencarian case-insensitive
user@host:~$ grep -i serverroot /etc/httpd/conf/httpd.conf
# reverse search
user@host:~$ grep -v -i server /etc/hosts
# menghindari baris komentar (yang diawali dengan # atau ;)
user@host:~$ grep -v '^[#;]' /etc/systemd/system/multi-user.target.wants/rsyslog.service
# pencarian dengan lebih dari satu regex bersamaan
root@host:~# grep -e 'pam_unix' -e 'user root' -e 'Accepted publickey' /var/log/secure | less
Misalnya ketika konfigurasi firewall, jadwalkan agar 15 menit lagi kembali ke pengaturan lama. Konfigurasi firewall diubah. Jika berhasil, matikan jadwal reset firewall. Jika konfigurasi gagal akan terkunci dari server sendiri, tapi dalam waktu 15 menit akan kembali seperti semula.
Gunakan perintah at TIMESPEC untuk mulai memasukkan tugas baru yang akan dijadwalkan. Perintah at membaca dari STDIN untuk mendapatkan perintah yang akan dijalankan.
# 5 menit dari sekarang
user@host:~$ at now +5min < myfile
warning: commands will be executed using /bin/sh
job 2 at Wed May 14 20:40:00 2025
# dengan waktu spesifik
user@host:~$ at 21:03 < myfile
warning: commands will be executed using /bin/sh
job 3 at Wed May 14 21:03:00 2025
Berikut beberapa contoh spesifikasi waktu yang bisa dipakai:
now +5minteatime tomorrow (teatime adalah 16:00)noon +4 days5pm august 3 2025Untuk spesifikasi waktu valid lainnya, lihat dokumen timespec lokal di bagian referensi.
# Untuk melihat sekilas pekerjaan yang menunggu untuk pengguna saat ini, gunakan perintah atq atau at -l.
user@host:~$ atq
28 Mon May 19 05:13:00 2025 a user
29 Tue May 20 16:00:00 2025 h user
30 Wed May 21 12:00:00 2025 a user
# Gunakan perintah at -c NOMORPEKERJAAN untuk memeriksa perintah yang dijalankan ketika daemon atd mengeksekusi sebuah pekerjaan.
28 adalah nomor tugas unik.Mon May 16 05:13:00 2022 adalah tanggal dan waktu eksekusi untuk tugas terjadwal.a menunjukkan bahwa tugas dijadwalkan dengan antrian default ‘a’.user adalah pemilik dan pengguna untuk tugas tersebut.Pengguna biasa hanya bisa melihat dan mengatur tugas mereka sendiri. Pengguna root bisa melihat dan mengatur semua tugas untuk semua pengguna.
Perintah atrm JOBNUMBER menghapus tugas terjadwal. Hapus tugas terjadwal ketika tidak lagi membutuhkannya, misalnya ketika konfigurasi firewall jarak jauh berhasil dan tidak perlu meresetnya.
Gunakan perintah crontab untuk mengelola tugas terjadwal. Daftar berikut menunjukkan perintah yang dapat digunakan pengguna untuk mengelola tugas:
| Command | Kegunaan |
|---|---|
crontab -l |
Menampilkan daftar job (tugas terjadwal) untuk pengguna saat ini. |
crontab -r |
Menghapus semua job untuk pengguna saat ini. |
crontab -e |
Mengedit job untuk pengguna saat ini (membuka editor default). |
crontab filename |
Menghapus semua job, lalu menggantinya dengan job yang dibaca dari file filename. Perintah ini menggunakan input dari stdin jika tidak ada file yang ditentukan. |
Pengguna dengan hak istimewa dapat menggunakan opsi
-upada perintah crontab untuk mengelola tugas bagi pengguna lain.
Kolom-kolom dalam file crontab muncul dalam urutan berikut:
* * * * * perintah
│ │ │ │ │
│ │ │ │ └─── Hari dalam Minggu (0-7, 0=Minggu)
│ │ │ └───── Bulan (1-12)
│ │ └─────── Tanggal (1-31)
│ └───────── Jam (0-23)
└─────────── Menit (0-59)
Perintah akan dieksekusi ketika kolom Tanggal dalam bulan atau Tanggal dalam minggu menggunakan nilai yang sama selain karakter *, artinya perintah akan berjalan jika salah satu kondisi terpenuhi (bukan harus keduanya).. Misalnya, untuk menjalankan perintah pada tanggal 11 setiap bulan, dan setiap hari Jumat pukul 12:15 (format 24 jam), gunakan format pekerjaan berikut:
15 12 11 * Fri command
# Tugas berikut mengeksekusi perintah /usr/local/bin/yearly_backup pada pukul 09:00:00 pada tanggal 3 Februari, setiap tahun.
# Februari direpresentasikan sebagai angka 2 pada contoh, karena merupakan bulan kedua dalam setahun.
0 9 3 2 * /usr/local/bin/yearly_backup
# Tugas berikut mengirimkan email yang berisi kata "Chime" kepada pemilik tugas ini setiap lima menit setelah setiap jam mulai pukul 09:00 hingga 16:59 pada hari Jumat di bulan Juli.
*/5 9-16 * Jul 5 echo "Chime"
# Tugas berikut menjalankan perintah /usr/local/bin/daily_report setiap hari dari Senin hingga Jumat pada pukul dua menit sebelum tengah malam.
58 23 * * 1-5 /usr/local/bin/daily_report
# The following job executes the mutt command to send the Checking in mail message to the developer@example.com recipient every day from Monday to Friday at 09:00.
0 9 * * 1-5 mutt -s "Checking in" developer@example.com % Hi there, just checking in.
Mulai dari Red Hat Enterprise Linux 10, daemon dan pengelola layanan systemd menggantikan daemon cron tradisional untuk sebagian besar tugas sistem penjadwalan, melalui unit pengatur waktu systemd.
root@host:~# systemctl list-units -t timer
UNIT LOAD ACTIVE SUB DESCRIPTION
dnf-makecache.timer loaded active waiting dnf makecache --timer
fstrim.timer loaded active waiting Discard unused ...
fwupd-refresh.timer loaded active waiting Refresh fwupd ...
logrotate.timer loaded active waiting Daily rotation ...
...output omitted...
root@host:~# systemctl list-unit-files -t timer
UNIT FILE STATE PRESET
dnf-makecache.timer enabled enabled
fstrim.timer enabled enabled
fwupd-refresh.timer enabled enabled
insights-client.timer disabled disabled
logrotate.timer enabled enabled
mdadm-last-resort@.timer static -
mdcheck_continue.timer disabled disabled
mdcheck_start.timer disabled disabled
mdmonitor-oneshot.timer disabled disabled
plocate-updatedb.timer enabled enabled
podman-auto-update.timer disabled disabled
raid-check.timer enabled enabled
rhc-canonical-facts.timer disabled disabled
systemd-sysupdate-reboot.timer disabled disabled
systemd-sysupdate.timer disabled disabled
systemd-tmpfiles-clean.timer static -
16 unit files listed.
# memulai unit timer
root@host:~# systemctl start logrotate.timer
# menghentikan unit timer
root@host:~# systemctl stop logrotate.timer
# mengaktifkan dari mulai boot
root@host:~# systemctl enable logrotate.timer
# mengaktifkan langsung
root@host:~# systemctl enable --now logrotate.timer
# menonaktifkan dari mulai boot
root@host:~# systemctl disable logrotate.timer
# menonaktifkan langsung
root@host:~# systemctl disable --now logrotate.timer
root@host:~# systemctl status logrotate.timer
● logrotate.timer - Daily rotation of log files
Loaded: loaded (/usr/lib/.../logrotate.timer; enabled; preset: enabled)
Active: active (waiting) since Wed 2025-05-28 23:28:22 UTC; 54min ago
Invocation: 3a95de54d4c04c539d43b3808c27e99a
Trigger: Fri 2025-05-30 00:48:43 UTC; 24h left
Triggers: ● logrotate.service
Docs: man:logrotate(8)
man:logrotate.conf(5)
May 28 ... workstation systemd[1]: Started logrotate.timer - Daily ...
Paket sysstat menyediakan unit timer systemd, yaitu layanan sysstat-collect.timer, untuk mengumpulkan statistik sistem setiap 10 menit.
# contoh isi file /usr/lib/systemd/system/sysstat-collect.timer
...output omitted...
[Unit]
Description=Run system activity accounting tool every 10 minutes
[Timer]
OnCalendar=*:00/10
[Install]
WantedBy=sysstat.service
[Unit] dan [Install] berisi item konfigurasi yang umum untuk semua unit systemd. Opsi khusus timer didefinisikan di bagian [Timer].OnCalendar=*:00/10 menandakan bahwa unit timer ini mengaktifkan unit layanan sysstat-collect.service yang sesuai setiap 10 menit.OnCalendar diatur ke nilai 2025-07-* 12:35,37,39:16, unit pengatur waktu akan mengaktifkan unit layanan yang sesuai pada pukul 12:35:16, 12:37:16, dan 12:39:16, setiap hari di bulan Juli 2025.OnUnitActiveSec diatur ke nilai 15min, unit pengatur waktu akan memicu unit layanan terkait untuk mulai beroperasi 15 menit setelah terakhir kali unit layanan tersebut diaktifkan.# setelah mengubah konfigurasi unit timer, lakukan reload
root@host:~# systemctl daemon-reload
# setelah itu aktifkan secara langsung
root@host:~# systemctl enable --now UNITNAME.timer
Jangan memodifikasi file konfigurasi unit apa pun di direktori
/usr/lib/systemd/system. Unitsystemdakan menimpa semua perubahan konfigurasi yang dilakukan di direktori/usr/lib/systemd/system. Untuk memodifikasi konfigurasi unit systemd, salin file konfigurasi unitnya dari direktori/usr/lib/systemd/systemke direktori/etc/systemd/system, lalu modifikasi file yang disalin untuk mencegah pembaruan paket penyedia menimpa perubahan tersebut. Jika terdapat dua file dengan nama yang sama di direktori/usr/lib/systemd/systemdan/etc/systemd/system, maka unit timer systemd akan memparsing file di direktori/etc/systemd/system.
Saat sistem booting, salah satu unit layanan systemd pertama yang diluncurkan adalah layanan systemd-tmpfiles-setup. Layanan ini menjalankan perintah systemd-tmpfiles, yang membaca instruksi dari file konfigurasi /usr/lib/tmpfiles.d/*.conf, /run/tmpfiles.d/*.conf, dan /etc/tmpfiles.d/*.conf. File konfigurasi ini mencantumkan file dan direktori yang diperintahkan kepada layanan systemd-tmpfiles-setup untuk dibuat, dihapus, atau diamankan dengan izin.
# lihat isi file konfigurasi unit systemd-tmpfiles-clean.timer:
user@host:~$ systemctl cat systemd-tmpfiles-clean.timer
# /usr/lib/systemd/system/systemd-tmpfiles-clean.timer
# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
...output omitted...
[Unit]
Description=Daily Cleanup of Temporary Directories
Documentation=man:tmpfiles.d(5) man:systemd-tmpfiles(8)
ConditionPathExists=!/etc/initrd-release
[Timer]
OnBootSec=15min ---> unit systemd-tmpfiles-clean.service akan dijalankan 15 menit setelah sistem menyala
OnUnitActiveSec=1d ---> pemicu lebih lanjut untuk unit systemd-tmpfiles-clean.service terjadi 24 jam setelah unit layanan terakhir diaktifkan.
# misalnya OnUnitActiveSec diubah jadi 30min agar tidak terlalu lama, setelah diubah jlakukan reload
root@host:~# systemctl daemon-reload
# lihat status unit timer
root@host:~# systemctl status systemd-tmpfiles-clean.timer
Perintah systemd-tmpfiles --clean memparsing file konfigurasi yang sama seperti perintah systemd-tmpfiles --create; alih-alih membuat file dan direktori, perintah ini menghapus semua file yang tidak diakses, diubah, atau dimodifikasi lebih baru daripada usia maksimum yang ditentukan dalam file konfigurasi.
Sintaksnya terdiri dari kolom-kolom berikut: Tipe, Path, Mode, UID, GID, Umur, dan Argumen. Contoh berikut menghapus konfigurasi di direktori /run/systemd/seats:
d /run/systemd/seats 0755 root root -
/run/systemd/seats jika belum ada.root dan grup root sebagai pemilik.rwxr-xr-x).systemd-tmpfiles tidak membersihkan direktori ini secara otomatis.Contoh berikut menghapus file dari direktori /home/student yang tidak diakses, diubah, atau dimodifikasi selama lebih dari satu hari:
D /home/student 0700 student student 1d
/home/student jika belum ada.student dan grup student sebagai pemilik.rwx------).systemd-tmpfiles --clean, semua file yang tidak diakses, ubah, atau modifikasi selama lebih dari satu hari akan dihapus.Contoh berikut membuat tautan simbolis ke direktori /etc/fstab:
L /run/fstablink - root root - /etc/fstab
/run/fstablink yang mengarah ke direktori /etc/fstab.root dan grup root sebagai pemilik./etc/fstab untuk menunjukkan sumber tautan.File konfigurasi layanan systemd-tmpfiles-clean dapat berada di tiga lokasi:
/etc/tmpfiles.d/*.conf/run/tmpfiles.d/*.conf/usr/lib/tmpfiles.d/*.confJika sebuah file di direktori
/run/tmpfiles.d/memiliki nama file yang sama dengan file di direktori/usr/lib/tmpfiles.d/, maka layanan akan menggunakan file di direktori/run/tmpfiles.d/. Jika sebuah file di direktori/etc/tmpfiles.d/memiliki nama file yang sama dengan file di direktori/run/tmpfiles.d/atau/usr/lib/tmpfiles.d/, maka layanan akan menggunakan file di direktori/etc/tmpfiles.d/.
File /etc/crontab dan file-file lain di direktori /etc/cron.d menentukan tugas sistem yang berulang. Selalu buat file crontab kustom di direktori /etc/cron.d untuk menjadwalkan pekerjaan sistem yang berulang. Tempatkan file crontab kustom di direktori /etc/cron.d agar pembaruan paket tidak menimpa file /etc/crontab.
Sistem crontab juga termasuk repositori untuk skrip yang dijalankan setiap jam, hari, minggu, atau bulan. Repositori ini ditempatkan di direktori /etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly, atau /etc/cron.monthly.
Setiap skrip di direktori /etc/cron.hourly adalah pekerjaan yang dijalankan melalui file crontab sistem sekunder /etc/cron.d/0hourly.
Untuk menyiapkan tugas cron sistem, tambahkan file crontab di direktori /etc/cron.d.
# contoh file bernama /etc/cron.d/timestamp_example menambahkan file sementara bernama /tmp/timestamp_example.txt dengan output dari perintah date setiap dua menit
# Example timestamp cronjob
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
*/2 * * * * root date >> /tmp/timestamp_example.txt
Perintah anacron menggunakan skrip run-parts untuk menjalankan pekerjaan harian, mingguan, atau bulanan dari file konfigurasi /etc/anacrontab secara berulang. Perintah anacron memastikan bahwa tugas terjadwal selalu berjalan dan tidak terlewatkan secara tidak sengaja karena sistem dimatikan atau dihibernasi.
# File /etc/anacrontab berisi empat kolom per baris, seperti yang ditunjukkan pada contoh berikut:
# /etc/anacrontab: configuration file for anacron
# See anacron(8) and anacrontab(5) for details.
SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# the maximal random delay added to the base delay of the jobs
RANDOM_DELAY=45
# the jobs will be started during the following hours only
START_HOURS_RANGE=3-22
#period in days delay in minutes job-identifier command
1 5 cron.daily nice run-parts /etc/cron.daily
7 25 cron.weekly nice run-parts /etc/cron.weekly
@monthly 45 cron.monthly nice run-parts /etc/cron.monthly
Layanan penjadwal perintah crond.service dan perintah anacron bekerja bersama sebagai berikut:
/etc/cron.d menyertakan file crontab 0hourly yang pada satu menit setelah setiap jam, menjalankan perintah run-parts /etc/cron.hourly sebagai pengguna root./etc/cron.hourly berisi skrip shell bernama 0anacron yang, pada gilirannya, secara kondisional menjalankan perintah /usr/sbin/anacron -s./usr/sbin/anacron -s membaca file konfigurasi /etc/anacrontab dan menjalankan perintah nice run-parts pada file /etc/cron.daily, /etc/cron.weekly, dan /etc/cron.monthly pada interval waktu tertentu, termasuk penundaan acak hingga 45 menit.RHEL menggunakan standar logging berbasis protokol syslog untuk log sistem. Layanan systemd-journald dan rsyslog menangani pesan syslog di RHEL
Layanan systemd-journald mengumpulkan pesan events dari banyak sumber:
syslog| File Log | Jenis Pesan yang Disimpan |
|---|---|
/var/log/messages |
Sebagian besar pesan syslog dicatat di sini. |
/var/log/secure |
Pesan tentang peristiwa keamanan dan autentikasi. |
/var/log/maillog |
Pesan tentang server email (mail server). |
/var/log/cron |
Pesan tentang eksekusi job terjadwal (cron). |
/var/log/boot.log |
Pesan konsol tentang startup sistem yang tersembunyi oleh layar startup grafis, serta pesan syslog yang dikirim ke fasilitas local7. |
Setiap pesan log dikategorikan berdasarkan fasilitas (sub-sistem yang menghasilkan pesan) dan prioritas (tingkat keparahan pesan).
Tabel berikut mencantumkan fasilitas syslog standar:
| Kode | Fasilitas | Deskripsi Fasilitas |
|---|---|---|
| 0 | kern | Pesan kernel. |
| 1 | user | Pesan tingkat pengguna. |
| 2 | Pesan sistem email. | |
| 3 | daemon | Pesan daemon sistem. |
| 4 | auth | Pesan autentikasi dan keamanan. |
| 5 | syslog | Pesan internal syslog. |
| 6 | lpr | Pesan printer. |
| 7 | news | Pesan berita jaringan (network news). |
| 8 | uucp | Pesan protokol UUCP. |
| 9 | cron | Pesan daemon penjadwalan (cron). |
| 10 | authpriv | Pesan otorisasi non-sistem. |
| 11 | ftp | Pesan protokol FTP. |
| 16-23 | local0 - local7 | Pesan lokal khusus (custom local messages). |
Tabel berikut mencantumkan prioritas syslog standar dari yang tertinggi ke yang terendah:
| Kode | Prioritas | Deskripsi Prioritas |
|---|---|---|
| 0 | emerg | Sistem tidak dapat digunakan (unusable). |
| 1 | alert | Tindakan harus segera diambil. |
| 2 | crit | Kondisi kritis (critical condition). |
| 3 | err | Kondisi kesalahan non-kritis (noncritical error). |
| 4 | warning | Kondisi peringatan (warning condition). |
| 5 | notice | Kejadian normal tetapi signifikan. |
| 6 | info | Kejadian informasional. |
| 7 | debug | Pesan tingkat debugging. |
Layanan rsyslog menjalankan logging syslog. Layanan rsyslog menggunakan fasilitas dan prioritas pesan log untuk menentukan cara menanganinya. Aturan menentukan fasilitas dan prioritas di file /etc/rsyslog.conf dan di file manapun dalam direktori /etc/rsyslog.d yang berakhiran .conf.
# Aturan berikut di file /etc/rsyslog.conf menyimpan pesan yang dikirim ke fasilitas authpriv dengan prioritas apa pun ke file /var/log/secure:
authpriv.* /var/log/secure
# Aturan berikut menyimpan pesan yang dikirim ke fasilitas authpriv dengan prioritas warning, notice, info, atau debug ke file /var/log/secure:
authpriv.warning /var/log/secure
#### RULES ####
# Log all kernel messages to the console.
# Logging much else clutters up the screen.
#kern.* /dev/console
# Log anything (except mail) of level info or higher.
# Don't log private authentication messages!
# The none keyword in the priority field indicates that no messages for the indicated facility are stored in the given file, to limit stored messages.
*.info;mail.none;authpriv.none;cron.none /var/log/messages
# The authpriv file has restricted access.
authpriv.* /var/log/secure
# Log all the mail messages in one place.
mail.* -/var/log/maillog
# Log cron stuff
cron.* /var/log/cron
# The rsyslog.conf file has a setting to print all the syslog messages with the emerg priority to the terminals of all logged-in users.
# Everybody gets emergency messages
*.emerg :omusrmsg:*
# Save news errors of level crit and higher in a special file.
uucp,news.crit /var/log/spooler
# Save boot messages also to boot.log
local7.* /var/log/boot.log
Perintah logrotate dijalankan oleh unit timer systemd dan memutar file log supaya tidak memakan terlalu banyak ruang di direktori /var/log. Ketika sebuah file log diputar, namanya akan diganti dengan ekstensi yang menunjukkan tanggal rotasinya.
Misalnya, file /var/log/messages akan diganti namanya menjadi /var/log/messages-20250620 saat diputar pada 2025-06-20. Setelah file log sebelumnya diputar, file log baru dibuat dan layanan yang terkait dengan file log tersebut diberitahu.
Contoh berikut menjelaskan susunan pesan log di file log /var/log/secure.
Mar 20 20:11:48 localhost sshd[1433]: Failed password for student from 172.25.0.10 port 59344 ssh2
20 Mar 20:11:48: Cap waktu dari entri loglocalhost: Host yang mengirim pesan logsshd[1433]: Nama program atau proses dan nomor PID yang mengirim pesan logFailed password for: Pesan yang dikirimGunakan perintah tail -f /path/to/file untuk memantau event log.
Perintah logger mengirim pesan ke layanan rsyslog. Secara default, perintah logger mengirim pesan tipe user dengan prioritas notice (user.notice) kecuali jika ditentukan lain dengan opsi -p. Berguna untuk menguji perubahan pada konfigurasi layanan rsyslog.
Misalnya, pesan log yang cocok dengan filter fasilitas atau prioritas local7.* disimpan di file /var/log/boot.log, berdasarkan aturan yang ditetapkan di file /etc/rsyslog.conf default. Jadi, untuk mengirim pesan ke layanan rsyslog dan mencatat pesan tersebut di file log /var/log/boot.log, jalankan perintah logger berikut:
root@host:~# logger -p local7.notice "Log entry created on host"
journalctl.-n, contoh: journalctl -n 5.journalctl -f mengambil 10 baris terakhir dan menampilkan output log secara berkelanjutan.-p, contoh: journalctl -p err.-u, contoh: journalctl -u sshd.service.--since dan atau --until, contoh: journalctl --since "2025-06-01 20:30" --until "2025-06-04 10:00".journalctl --since "-1 hour".verbose: journalctl -o verboseDaftar berikut menunjukkan beberapa kolom jurnal sistem untuk mencari baris yang relevan dengan proses atau event tertentu:
Sebagai contoh, perintah journalctl berikut menunjukkan semua entri jurnal terkait dengan layanan sshd.service dengan PID 2188:
root@host:~# journalctl _SYSTEMD_UNIT=sshd.service _PID=2188
Jun 09 12:57:21 workstation (sshd)[2188]: sshd.service: Referenced but...
Jun 09 12:57:21 workstation sshd[2188]: Server listening on 0.0.0.0 port 22.
Jun 09 12:57:21 workstation sshd[2188]: Server listening on :: port 22.
Secara default, RHEL menyimpan log jurnal di direktori /run/log/journal dan dibersihkan setelah reboot.
Konfigurasikan layanan systemd-journald sebagai berikut untuk menyimpan jurnal sistem secara permanen setelah reboot:
# buat direktori
root@host:~# mkdir /var/log/journal
# Kosongkan jurnal saat ini ke penyimpanan.
root@host:~# journalctl --flush
# subdirektori di direktori /var/log/journal dg nama karakter hexadesimal yg berisi file dg ekstensi .journal
root@host:~# ls /var/log/journal
4ec03abd2f7b40118b1b357f479b3112
root@host:~# ls /var/log/journal/4ec03abd2f7b40118b1b357f479b3112
system.journal user-1000.journal
# ambil entri hanya dari boot pertama
root@host:~# journalctl -b 1
...output omitted...
# ambil entri hanya dari boot kedua (argumen bisa digunakan jika sistem di reboot setidaknya 2x)
root@host:~# journalctl -b 2
...output omitted...
# list event booting sistem yang dikenali oleh perintah journalctl, dengan menggunakan opsi --list-boots.
root@host:~# journalctl --list-boots
-6 27de... Wed 2025-06-04 20:04:32 EDT—Wed 2025-06-04 21:09:36 EDT
-5 6a18... Tue 2025-06-26 08:32:22 EDT—Thu 2025-06-26 16:02:33 EDT
-4 e2d7... Thu 2025-07-04 16:02:46 EDT—Fri 2025-07-04 20:59:29 EDT
-3 45c3... Sat 2025-07-05 11:19:47 EDT—Sat 2025-07-05 11:53:32 EDT
-2 dfae... Sat 2025-07-05 13:11:13 EDT—Sat 2025-07-05 13:27:26 EDT
-1 e754... Sat 2025-07-05 13:58:08 EDT—Sat 2025-07-05 14:10:53 EDT
0 ee2c... Mon 2025-07-07 09:56:45 EDT—Mon 2025-07-07 12:57:21 EDT
# ambil entri hanya dari boot saat ini
root@host:~# journalctl -b
...output omitted...
Jurnal ini memiliki mekanisme rotasi log bawaan yang dipicu setiap bulan. Selain itu, sistem tidak mengizinkan jurnal melebihi 10% dari sistem file tempatnya berada, atau menyisakan kurang dari 15% ruang kosong pada sistem file. Nilai-nilai ini dapat dimodifikasi untuk jurnal runtime dan persistent di file konfigurasi /etc/systemd/journald.conf. Proses systemd-journald mencatat batasan ukuran jurnal saat ini ketika dimulai.
# menampilkan ukuran limit entri jurnal
[user@host ~]$ journalctl | grep -E 'Runtime Journal|System Journal'
Jun 10 22:22:57 localhost systemd-journald[263]: Runtime Journal (/run/log/journal/93c43a50cada46e39819e0da68f790a2) is 4.2M, max 34.1M, 29.8M free.
Jun 10 22:23:01 host systemd-journald[740]: Runtime Journal (/run/log/journal/da54d37671ac4429bcdfacfe7bebb5a1) is 4.2M, max 34.1M, 29.8M free.
Jun 10 22:30:50 host systemd-journald[740]: System Journal (/var/log/journal/da54d37671ac4429bcdfacfe7bebb5a1) is 8M, max 997.3M, 989.3M free.
...output omitted...
Mulai dari RHEL 10, file /etc/systemd/journald.conf tidak ada saat instalasi. Layanan systemd-journald membaca pengaturan default-nya dari file konfigurasi /usr/lib/systemd/journald.conf.
Untuk mengubah perilaku jurnal, jangan mengedit file konfigurasi /usr/lib/systemd/journald.conf secara langsung. Sebaliknya, salin file /usr/lib/systemd/journald.conf ke direktori /etc/systemd, lalu hapus komentar dan ubah pengaturan yang sesuai di file /etc/systemd/journald.conf yang dihasilkan. Pengaturan konfigurasi di file /etc/systemd/journald.conf lebih diutamakan daripada pengaturan default di file /usr/lib/systemd/journald.conf.
Untuk mengkonfigurasi rotasi jurnal otomatis untuk jurnal persisten atau jurnal hanya-runtime, atur parameter berikut di file /etc/systemd/journald.conf.
/var/log/journal./run/log/journal.SystemMaxUse dan RuntimeMaxUse: Jumlah maksimum ruang sistem file yang dapat digunakan jurnal. Nilai ini adalah 10% dari total ruang sistem file secara default, dan dibatasi hingga 4 GB.
SystemMaxFileSize dan RuntimeMaxFileSize: Ukuran file maksimum jurnal sebelum dirotasi. Nilai ini adalah seperdelapan dari nilai SystemMaxUse/RuntimeMaxUse secara default, dan dibatasi hingga 128 M, dan biasanya mendukung penyimpanan tujuh file jurnal yang dirotasi sebagai riwayat. Jika mode pemadatan jurnal diaktifkan (default), nilai ini dibatasi hingga 4 GB.
SystemKeepFree dan RuntimeKeepFree: Ruang sistem file kosong minimum yang harus tersisa sebelum jurnal yang diarsipkan dihapus. Setidaknya 15% dari total ruang sistem file selalu dibiarkan kosong secara default. Nilai ini dibatasi hingga 4 GB.
# Setelah mengedit file konfigurasi /etc/systemd/journald.conf, mulai ulang layanan systemd-journald untuk menerapkan perubahan konfigurasi.
root@host:~# systemctl restart systemd-journald
# menampilkan gambaran umum dari pengaturan sistem terkait waktu saat ini
user@host:~$ timedatectl
Local time: Wed 2022-03-16 05:53:05 EDT
Universal time: Wed 2022-03-16 09:53:05 UTC
RTC time: Wed 2022-03-16 09:53:05
Time zone: America/New_York (EDT, -0400)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no
# list database zona waktu
user@host:~$ timedatectl list-timezones
Africa/Abidjan
Africa/Accra
Africa/Addis_Ababa
...output omitted...
# ganti zona waktu
root@host:~# timedatectl set-timezone America/Phoenix
untuk lebih mudah, gunakan perintah
tzselectuntuk lihat zona waktu
# gunakan format "YYYY-MM-DD hh:mm:ss"
root@host:~# timedatectl set-time 9:00:00
Contoh sebelumnya mungkin gagal dengan pesan error
Failed to set time: Automatic time synchronization is enabled. Dalam kasus itu, pertama nonaktifkan sinkronisasi waktu otomatis sebelum mengatur tanggal atau waktu secara manual.
# menonaktofkan sinkronisasi NTP
root@host:~# timedatectl set-ntp false
Layanan chronyd menyinkronkan Jam Real-Time (RTC) lokal yang tidak akurat dengan server NTP yang sudah dikonfigurasi. Jika tidak ada koneksi jaringan, maka layanan chronyd akan menghitung pergeseran jam RTC, dan mencatatnya di file /var/lib/chrony/drift (yang ditentukan oleh pengaturan driftfile di file konfigurasi /etc/chrony.conf).
server: Menambahkan satu server NTP tunggal. Bisa digunakan berulang.pool: Menentukan nama DNS yang meresolusi ke beberapa server NTP (daftar bisa berubah).# Sebagai contoh, jika baris server ntp.example.com iburst ada di file konfigurasi /etc/chrony.conf.
# layanan chronyd menggunakan server ntp.example.com sebagai sumber waktu NTP.
# Use public servers from the pool.ntp.org project.
pool 2.rhel.pool.ntp.org iburst
server ntp.example.com iburst
...output omitted...
Opsi
iburst(disarankan): Membuat chronyd melakukan 4-8 pengukuran cepat agar sinkronisasi lebih cepat.
root@host:~# chronyc sources -v
.-- Source mode '^' = server, '=' = peer, '#' = local clock.
/ .- Source state '*' = current best, '+' = combined, '-' = not combined,
| / 'x' = may be in error, '~' = too variable, '?' = unusable.
|| .- xxxx [ yyyy ] +/- zzzz
|| Reachability register (octal) -. | xxxx = adjusted offset,
|| Log2(Polling interval) --. | | yyyy = measured offset,
|| \ | | zzzz = estimated error.
|| | | \
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^* ntp.example.com 2 6 377 20 -28us[ +361ns] +/- 14ms
^- 192.0.2.10 2 10 377 936 -2329us[-2329us] +/- 120ms
^+ 2001:0db8:5:1890:f888:3e> 2 10 377 1009 -777us[ -673us] +/- 27ms
^+ clock3.example.net 2 10 377 149 -1220us[-1220us] +/- 36ms
^- 2001:0db8:88:f031:3333:a> 2 10 377 767 -1300us[-1300us] +/- 118ms
Karakter (*) Source State menandakan bahwa chronyd menggunakan ntp.example.com sebagai sumber waktu untuk sinkronisasi. Jika ada x atau tanda tilde (~) di kolom itu, berarti layanan chronyd menentukan bahwa ada yang tidak beres dengan waktu yang diberikan server NTP jarak jauh ini. Kalau ada tanda tanya (?) di kolom itu, berarti server saat ini tidak bisa digunakan.
SELinux terdiri dari kebijakan khusus aplikasi yang dibuat oleh pengembang aplikasi untuk menentukan tindakan dan akses mana yang diizinkan untuk setiap file biner yang dapat dieksekusi, file konfigurasi, dan file data yang digunakan aplikasi.
SELinux memiliki 3 mode operasi:
Kebanyakan sysadmin familiar dengan user, grup, izin file. ini disebut Discretionary Access Control (DAC). Selinux menyediakan lapisan keamanan tambahan berbasis objek yang disebut Mandatory Access Control (MAC).
Kebijakan SELinux adalah aturan keamanan yang menentukan bagaimana proses tertentu mengakses file, direktori, dan port yang relevan. Setiap entitas sumber daya, seperti file, proses, direktori, atau port, memiliki label konteks SELinux.
Kebijakan server web secara default tidak memiliki aturan izin untuk menggunakan file yang diberi label tmp_t, seperti di direktori /tmp dan /var/tmp, sehingga aksesnya tidak diizinkan. Dengan SELinux diaktifkan, pengguna jahat yang menggunakan proses Apache yang telah dikompromikan tetap tidak akan memiliki akses ke file di direktori /tmp.
Banyak perintah yang menampilkan daftar sumber daya menggunakan opsi -Z untuk mengelola konteks SELinux. Misalnya, perintah ps, ls, cp, dan mkdir semuanya menggunakan opsi -Z.
root@host:~# ps axZ
root@host:~# ps -ZC httpd
root@host:~# ls -Z /var/www
# melihat mode
root@host:~# getenforce
Enforcing
# mengubah mode
root@host:~# setenforce
usage: setenforce [ Enforcing | Permissive | 1 | 0 ]
# mengubah mode ke permissive
root@host:~# setenforce 0
Untuk konfigurasi permanen, modifikasi di file /etc/selinux/config.
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
...output omitted...
SELINUX=enforcing
# SELINUXTYPE= can take one of these three values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
SELinux menyimpan database berbasis file dari kebijakan pelabelan file di direktori /etc/selinux/targeted/contexts/files. File yang disalin akan diubah label SELinux nya, diturunkan dari direktori tujuan. Perintah cp -p menjaga semua atribut file saat menyalin jika memungkinkan, dan perintah cp --preserve=context hanya menjaga konteks SELinux.
# buat dua file di direktori tmp
root@host:~# touch /tmp/file1 /tmp/file2
# keduanya memiliki label user_tmp_t yang diturunkan dari parent direktori
root@host:~# ls -Z /tmp/file*
unconfined_u:object_r:user_tmp_t:s0 /tmp/file1
unconfined_u:object_r:user_tmp_t:s0 /tmp/file2
# direktori /var/www/html memiliki label httpd_sys_content_t
root@host:~# ls -Zd /var/www/html/
system_u:object_r:httpd_sys_content_t:s0 /var/www/html/
# pindah file1 ke direktori /var/www/html
root@host:~# mv /tmp/file1 /var/www/html/
# salin file2 ke direktori /var/www/html
root@host:~# cp /tmp/file2 /var/www/html/
# cek label
root@host:~# ls -Z /var/www/html/file*
unconfined_u:object_r:user_tmp_t:s0 /var/www/html/file1
unconfined_u:object_r:httpd_sys_content_t:s0 /var/www/html/file2
Konteks SELinux bisa diubah dengan perintah semanage fcontext, restorecon, dan chcon. Metode yang direkomendasikan adalah mengubah konteks policy dengan perintah semanage fcontext. Perintah chcon bisa ddigunakan untuk mengubah langsung, tetapi hanya sementara (setelah rebot akan kembali semula).
Contoh berikut membuat direktori dengan konteks SELinux default_t, yang diwarisinya dari direktori induk /.
# buat direktori
root@host:~# mkdir /virtual
root@host:~# ls -Zd /virtual
unconfined_u:object_r:default_t:s0 /virtual
# ubah konteks file dengan chcon
root@host:~# chcon -t httpd_sys_content_t /virtual
root@host:~# ls -Zd /virtual
unconfined_u:object_r:httpd_sys_content_t:s0 /virtual
# reset label dengan restorecon
root@host:~# restorecon -v /virtual
Relabeled /virtual from unconfined_u:object_r:httpd_sys_content_t:s0 to unconfined_u:object_r:default_t:s0
root@host:~# ls -Zd /virtual
unconfined_u:object_r:default_t:s0 /virtual
Saat melihat kebijakan, ekspresi reguler panjang yang paling umum adalah (/.*)?, yang biasanya ditambahkan ke nama direktori. Misalnya, aturan berikut menentukan bahwa direktori /var/www/cgi-bin, serta semua file di dalamnya atau di subdirektorinya, memiliki konteks SELinux system_u:object_r:httpd_sys_script_exec_t:s0, kecuali ada aturan yang lebih spesifik menggantikan ini.
Berikut beberapa opsi perintah semanage fcontext:
-a, --add: Tambahkan catatan dari jenis objek yang ditentukan.-d, --delete: Hapus catatan dari tipe objek yang ditentukan.-l, --list: Daftar catatan dari jenis objek yang ditentukan.Untuk mengelola konteks SELinux, pasang paket policycoreutils dan policycoreutils-python-utils, yang berisi perintah restorecon dan semanage. Dalam contoh berikut, lihat konteks file sebelum dan sesudah menggunakan perintah semanage dan restorecon.
# verifikasi konteks selinux
root@host:~# ls -Z /var/www/html/file*
unconfined_u:object_r:user_tmp_t:s0 /var/www/html/file1
unconfined_u:object_r:httpd_sys_content_t:s0 /var/www/html/file2
# list konteks selinux default
root@host:~# semanage fcontext -l
...output omitted...
/var/www(/.*)? all files system_u:object_r:httpd_sys_content_t:s0
...output omitted...
# mengembalikan konteks default pada semua file dan subdirektori.
root@host:~# restorecon -Rv /var/www/
Relabeled /var/www/html/file1 from unconfined_u:object_r:user_tmp_t:s0 to unconfined_u:object_r:httpd_sys_content_t:s0
# lihat konteks
root@host:~# ls -Z /var/www/html/file*
unconfined_u:object_r:httpd_sys_content_t:s0 /var/www/html/file1
unconfined_u:object_r:httpd_sys_content_t:s0 /var/www/html/file2
Contoh berikut menggunakan perintah semanage untuk menambahkan kebijakan konteks untuk direktori baru.
# buat direktori
root@host:~# mkdir /virtual
# buat file index
root@host:~# touch /virtual/index.html
# lihat konteks selinux
root@host:~# ls -Zd /virtual/
unconfined_u:object_r:default_t:s0 /virtual
root@host:~# ls -Z /virtual/
unconfined_u:object_r:default_t:s0 index.html
# tambahkan kebijakan konteks selinux
root@host:~# semanage fcontext -a -t httpd_sys_content_t '/virtual(/.*)?'
# atur konteks default pada direktori dan semua file di dalamnya dengan restorecon
root@host:~# restorecon -RFvv /virtual
Relabeled /virtual from unconfined_u:object_r:default_t:s0 to system_u:object_r:httpd_sys_content_t:s0
Relabeled /virtual/index.html from unconfined_u:object_r:default_t:s0 to system_u:object_r:httpd_sys_content_t:s0
# lihat konteks
root@host:~# ls -Zd /virtual/
drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 /virtual/
root@host:~# ls -Z /virtual/
-rw-r--r--. root root system_u:object_r:httpd_sys_content_t:s0 index.html
# melihat semua kustomisasi lokal pada kebijakan default.
root@host:~# semanage fcontext -l -C
SELinux fcontext type Context
/virtual(/.*)? all files system_u:object_r:httpd_sys_content_t:s0
root@host:~# getsebool -a
abrt_anon_write --> off
abrt_handle_event --> off
abrt_upload_watch_anon_write --> on
...output omitted...
Kebijakan layanan httpd mencakup Boolean httpd_enable_homedirs, yang memungkinkan berbagi direktori home dengan layanan httpd.
# contoh melihat status
root@host:~# getsebool httpd_enable_homedirs
httpd_enable_homedirs --> off
# lihat boolean httpd_enable_homedirs
root@host:~# semanage boolean -l | grep httpd_enable_homedirs
httpd_enable_homedirs (off , off) Allow httpd to enable homedirs
# mengaktifkan sementara sampai sistem reboot
root@host:~# setsebool httpd_enable_homedirs on
# lihat status
root@host:~# semanage boolean -l | grep httpd_enable_homedirs
httpd_enable_homedirs (on , off) Allow httpd to enable homedirs
# verifikasi
root@host:~# getsebool httpd_enable_homedirs
httpd_enable_homedirs --> on
# aktifkan permanen
root@host:~# setsebool -P httpd_enable_homedirs on
# lihat informasi
root@host:~# semanage boolean -l | grep httpd_enable_homedirs
httpd_enable_homedirs (on , on) Allow httpd to enable homedirs
# hanya mencantumkan Boolean persisten dengan pengaturan yang disesuaikan dibandingkan dengan kebijakan asli
root@host:~# semanage boolean -l -C
SELinux boolean State Default Description
httpd_enable_homedirs (on , on) Allow httpd to enable homedirs
Layanan pemecahan masalah SELinux, dari paket setroubleshoot-server, menyediakan alat untuk mendiagnosis masalah SELinux. Ketika SELinux menolak suatu tindakan, pesan Access Vector Cache (AVC) dicatat ke file log keamanan /var/log/audit/audit.log.
Contoh urutan perintah pada server web Apache standar
# buat file mypage
root@host:~# touch /root/mypage
# pindahkan file ke direktori web
root@host:~# mv /root/mypage /var/www/html
# jalankan service
root@host:~# systemctl start httpd
# coba akses
root@host:~# curl http://localhost/mypage
...output admitted...
<p>You don't have permission to access this resource.</p>
</body></html>
# lihat pesan log
root@host:~# tail /var/log/audit/audit.log
...output omitted...
type=AVC msg=audit(1749508506.271:159): avc: denied { getattr } for pid=1984 comm="httpd" path="/var/www/html/mypage" dev="sda3" ino=8805547 scontext=system_u:system_r:httpd_t:s0 tcontext=unconfined_u:object_r:admin_home_t:s0 tclass=file permissive=0
...output omitted..._
root@host:~# tail /var/log/messages
...output omitted...
Jun 9 22:35:06 servera setroubleshoot[2175]: SELinux is preventing /usr/sbin/httpd from getattr access on the file /var/www/html/mypage. For complete SELinux messages run: sealert -l a0bca4b2-46a9-4252-b0cd-6de0dfcdd454
...output omitted...
Output perintah sealert menjelaskan kejadian tersebut, dan mencakup proses yang terpengaruh, file yang diakses, serta tindakan yang dicoba dan ditolak.
root@host:~# sealert -l a0bca4b2-46a9-4252-b0cd-6de0dfcdd454
# Gunakan perintah ausearch untuk mencari kejadian AVC di file log /var/log/audit/audit.log.
root@host:~# ausearch -m AVC -ts recent
Konsol web RHEL menyertakan alat untuk memecahkan masalah SELinux. Pilih SELinux dari menu sebelah kiri. Jendela kebijakan SELinux menampilkan status penegakan saat ini. Bagian SELinux access control errors mencantumkan masalah SELinux saat ini.

Salah satu tindakan perintah tar berikut diperlukan untuk melakukan operasi tar:
-c atau --create: Membuat file arsip.-t atau --list: Menampilkan isi arsip.-x atau --extract: Mengekstrak arsip.Opsi umum perintah tar berikut sering disertakan:
-v atau --verbose: Menampilkan file yang sedang diarsipkan atau diekstrak selama operasi tar.-f atau --file: Setelah opsi ini, tambahkan nama file arsip yang akan dibuat atau dibuka.-p atau --preserve-permissions: Mempertahankan izin file asli saat mengekstrak.--xattrs: Mengaktifkan dukungan atribut tambahan, dan menyimpan atribut file tambahan.--selinux: Mengaktifkan dukungan konteks SELinux, dan menyimpan konteks file SELinux.Opsi kompresi perintah tar berikut digunakan untuk memilih algoritma:
-a atau --auto-compress: Gunakan akhiran arsip untuk menentukan algoritma yang akan digunakan.-z atau --gzip: Gunakan algoritma kompresi gzip, yang menghasilkan akhiran .tar.gz.-j atau --bzip2: Gunakan algoritma kompresi bzip2, yang menghasilkan akhiran .tar.bz2.-J atau --xz: Gunakan algoritma kompresi xz, yang menghasilkan akhiran .tar.xz.user@host:~$ tar -cf mybackup.tar myapp1.log myapp2.log myapp3.log
root@host:~# tar -cf /root/etc-backup.tar /etc
tar: Removing leading `/' from member names
root@host:~# tar -tf /root/etc.tar
etc/
etc/fstab
etc/crypttab
etc/mtab
...output omitted...
# ekstrak konten ke direktori kosong untuk menghindari overwrite file yg sudah ada
root@host:~# mkdir /root/etcbackup
root@host:~/etcbackup# tar -xf /root/etc.tar
# ketika di ekstrak, aturan perintah umask akan diterapkan. untuk menghindari:
user@host:~/scripts$ tar -xpf /home/user/myscripts.tar
Perintah tar mendukung metode kompresi berikut, dan lainnya:
gzip adalah metode yang lebih awal, tercepat, dan tersedia secara luas di berbagai platform.bzip2 menghasilkan arsip yang lebih kecil tetapi kurang tersedia secara luas dibandingkan gzip.xz adalah metode yang lebih baru, dan menawarkan rasio kompresi terbaik dari metode yang tersedia.# buat arsip dengan kompresi gzip
root@host:~# tar -czf /root/etcbackup.tar.gz /etc
tar: Removing leading `/' from member names
# buat arsip dengan kompresi bzip2
root@host:~# tar -cjf /root/logbackup.tar.bz2 /var/log
tar: Removing leading `/' from member names
# buat arsip dengan kompresi xz
root@host:~# tar -cJf /root/sshconfig.tar.xz /etc/ssh
tar: Removing leading `/' from member names
Perintah tar bisa mendeteksi otomatis jenis kompresi yang digunakan.
# gunakan perintah list file kompresi gz
user@host:~$ gzip -l file.tar.gz
compressed uncompressed ratio uncompressed_name
221603125 303841280 27.1% file.tar
# gunakan perintah xz untuk list file kompresi xz
user@host:~$ xz -l file.tar.xz
Strms Blocks Compressed Uncompressed Ratio Check Filename
1 1 195.7 MiB 289.8 MiB 0.675 CRC64 file.xz
user@host:~$ sftp remoteuser@remotehost
remoteuser@remotehost's password: password
Connected to remotehost.
sftp> help
Available commands:
bye Quit sftp
cd path Change remote directory to 'path'
chgrp [-h] grp path Change group of file 'path' to 'grp'
chmod [-h] mode path Change permissions of file 'path' to 'mode'
chown [-h] own path Change owner of file 'path' to 'own'
...output omitted...
sftp> pwd
Remote working directory: /home/remoteuser
sftp> lpwd
Local working directory: /home/user
sftp> mkdir hostbackup
sftp> cd hostbackup
sftp> put /etc/hosts
Uploading /etc/hosts to /home/remoteuser/hostbackup/hosts
/etc/hosts 100% 227 0.2KB/s 00:00
sftp> put -r directory
Uploading directory/ to /home/remoteuser/directory
Entering directory/
file1 100% 0 0.0KB/s 00:00
file2 100% 0 0.0KB/s 00:00
sftp> get /etc/dnf/dnf.conf
Fetching /etc/dnf/dnf.conf to dnf.conf
/etc/dnf.conf 100% 813 0.8KB/s 00:00
user@host:~$ sftp remoteuser@remotehost:/home/remoteuser/remotefile
Connected to remotehost.
Fetching /home/remoteuser/remotefile to remotefile
remotefile 100% 7 15.7KB/s 00:00
Mulai RHEL 10, perintah
scpmenggunakan SFTP untuk mentransfer file.
user@host:~$ scp /etc/dnf/dnf.conf /etc/hosts remoteuser@remotehost:/home/remoteuser
remoteuser@remotehost's password: password
dnf.conf 100% 813 0.8KB/s 00:00
hosts 100% 227 0.2KB/s 00:00
[user@host ~]$ scp remoteuser@remotehost:/etc/hostname /home/user
remoteuser@remotehost's password: password
hostname
Gunakan perintah rsync dg opsi -n untuk simulasi yang terjadi ketika perintah dieksekusi. Dua opsi standar adalah -a dan -v. Opsi -v atau --verbose untuk output lebih detail. Opsi -a atau --archive untuk menyalin secara rekursif dan mengaktifkan opsi lain.
Untuk menyertakan atribut tambahan saat menyinkronkan file:
-Auntuk menjaga Daftar Kontrol Akses (ACLs).-Xuntuk menjaga konteks SELinux.
root@host:~# rsync -av /var/log hosta:/tmp
root@hosta's password: password
receiving incremental file list
log/
log/README
log/boot.log
...output omitted...
sent 9,783 bytes received 290,576 bytes 85,816.86 bytes/sec
total size is 11,585,690 speedup is 38.57
root@host:~# rsync -av hosta:/var/log /tmp
root@hosta's password: password
receiving incremental file list
log/boot.log
log/dnf.librepo.log
log/dnf.log
...output omitted...
sent 9,783 bytes received 290,576 bytes 85,816.86 bytes/sec
total size is 11,585,690 speedup is 38.57
user@host:~$ sudo rsync -av /var/log /tmp
[sudo] password for user: password
receiving incremental file list
log/
log/README
log/boot.log
...output omitted...
log/tuned/tuned.log
sent 11,592,423 bytes received 779 bytes 23,186,404.00 bytes/sec
total size is 11,586,755 speedup is 1.00
user@host:~$ ls /tmp
log ssh-RLjDdarkKiW1
root@host:~# rsync -av /var/log/ /tmp
sending incremental file list
./
README
boot.log
...output omitted...
tuned/tuned.log
sent 11,592,389 bytes received 778 bytes 23,186,334.00 bytes/sec
total size is 11,586,755 speedup is 1.00
root@host:~# ls /tmp
anaconda dnf.rpm.log-20190318 private
audit dnf.rpm.log-20190324 qemu-ga
boot.log dnf.rpm.log-20190331 README
...output omitted...
Garis miring di ahir direktori source agar isi file direktori itu yang di singkronkan. Tanpa garis miring di ahir akan menyalin direktori itu sendiri.
TuneD adalah alat powerfull untuk tuning performa sistem di RHEL.
Layanan TuneD akan jalan otomatis setiap boot.
Dapat dilakukan dengan mengubah nilai variabel dynamic_tuning ke 1 di file /etc/tuned/tuned-main.conf.
root@host:~$ dnf install tuned
...output omitted...
Is this ok [y/N]: y
...output omitted...
root@host:~$ systemctl enable --now tuned
Created symlink /etc/systemd/system/multi-user.target.wants/tuned.service → /usr/lib/systemd/system/tuned.service.
| Profil Tuned | Tujuan |
|---|---|
| accelerator-performance | Peningkatan kinerja berbasis tuning performa. |
| aws | Optimasi untuk instans Amazon Web Services (AWS) EC2. |
| balanced | Profil tuned umum yang tidak terspesialisasi (general purpose). |
| balanced-battery | Profil balanced untuk penghematan daya. |
| desktop | Optimasi untuk penggunaan desktop. |
| hpc-compute | Optimasi untuk beban kerja komputasi High-Performance Computing (HPC). |
| intel-sst | Konfigurasi untuk Intel Speed Select Base Frequency. |
| latency-performance | Optimasi untuk kinerja deterministik dengan mengorbankan konsumsi daya yang lebih tinggi. |
| network-latency | Optimasi untuk kinerja deterministik dengan mengorbankan konsumsi daya yang lebih tinggi, difokuskan pada kinerja jaringan latensi rendah. |
| network-throughput | Optimasi untuk throughput jaringan streaming, umumnya hanya diperlukan pada CPU generasi lama atau jaringan 40 G+. |
| optimize-serial-console | Optimasi untuk penggunaan konsol serial. |
| powersave | Optimasi untuk konsumsi daya rendah. |
| throughput-performance | Tuning yang dapat diterapkan secara luas dan memberikan performa sangat baik di berbagai beban kerja server umum. |
| virtual-guest | Optimasi untuk berjalan di dalam virtual guest. |
| virtual-host | Optimasi untuk menjalankan guest Kernel-based Virtual Machine (KVM). |
Aplikasi TuneD menyimpan profil yang telah diinstal sebelumnya di direktori /usr/lib/tuned/profiles. Profil-profil ini tidak dimaksudkan untuk diedit secara langsung.
Profil direktif include bagian [main] di dalam file tuned.conf memungkinkan pewarisan (menggunakan pengaturan dari profil lain).
Untuk kustomisasi profil tuning, salin profil dari /usr/lib/tuned/profiles ke /etc/tuned/profiles (prioritas).
Parameter vm.swappiness bagian [sysctl] di dalam file tuned.conf menentukan seberapa agresif kernel memindahkan proses dari memori fisik ke ruang swap.
# untuk memeriksa
root@host:~# sysctl vm.swappiness
vm.swappiness = 30 ---> menerima nilai dari 0 hingga 100
Perintah tuned-adm mendukung aktivitas tuning berikut:
# identifikasi profil tuning yang aktif saat ini
root@host:~# tuned-adm active
Current active profile: throughput-performance
# verifikasi pengaturan sistem sesuai dengan tuning aktif
root@host:~# tuned-adm verify
Verification succeeded, current system settings match the preset profile.
See TuneD log file ('/var/log/tuned/tuned.log') for details.
# lihat semua profil tuning yang tersedia
root@host:~# tuned-adm list
# lihat informasi spesifik profil tuning
root@host:~# tuned-adm profile_info network-latency
# mengubah profil tuning yang aktif saat ini secara permanen
root@host:~# tuned-adm profile virtual-guest
# lihat saran profil tuning berbasis berbagai karakteristik
root@host:~# tuned-adm recommend
virtual-guest
# menonaktifkan semua aktifitas TuneD
root@host:~# tuned-adm off
Harus mengaktifkan akses administrative

root@host:~# dnf install cockpit
...output omitted...
Is this ok [y/N]: y
...output omitted...
Complete!
root@host:~# systemctl enable --now cockpit.socket
Created symlink '/etc/systemd/system/sockets.target.wants/cockpit.socket' → '/usr/lib/systemd/system/cockpit.socket'.
# jika pakai konfigurasi firewall custom, port 9090 harus dibuka, atau izinkan layanan cockpit
root@host:~# firewall-cmd --add-service=cockpit --permanent
success
root@host:~# firewall-cmd --reload
success
Akses konsol web melalui port 9090.
Adalah metode sistem operasi di mana pengelolaan waktu penggunaan CPU sepenuhnya diatur oleh sistem (kernel), bukan oleh program itu sendiri.
Mulai dari RHEL 10, algoritma yang mengimplementasikan kebijakan SCHED_NORMAL disebut Earliest Eligible Virtual Deadline First (EEVDF), yang menggantikan Completely Fair Scheduler (CFS) dari versi RHEL sebelumnya.