Bash script di linux normal nya bisa di buat untuk sekali eksekusi. Setelah eksekusi selesai maka untuk mengulangi action yang sama harus di lakukan call ulang atau eksekusi kembali secara manual.
karena keterbatasan ini, biasanya memanfaatkan crontab untuk melakukan call atau eksekusi secara berkala
Guide ini gunanya, misal kita sudah punya bash script yang di eksekusi secara berkala melalui crontab, kita pindahkan cara script di panggil menggunakan systemd service
Setidaknya kita sudah harus mempunyai 1 file script, dalam contoh ini saya menggunakan script convert_voice.sh
yang tersimpan di /opt/witness/bin/convert_voice.sh
buat file /etc/systemd/system/convert.service, kemudian isinya seperti contoh di bawah
[Unit]
Description=Convert Voice from unreadable ACR format to WAV pcm
[Service]
ExecStart=/opt/witness/bin/convert_voice.sh
buat file /etc/systemd/system/convert.timer, kemudian buat isinya seperti di bawah
[Unit]
Description=Check and convert voice every 10 seconds
[Timer]
OnBootSec=10
OnUnitActiveSec=10
AccuracySec=1ms
[Install]
WantedBy=timers.target
systemctl enable --now convert.timer
systemctl start convert.timer
systemctl status convert
[root@ccacr01 bin]# systemctl status convert
● convert.service - Convert Voice from unreadable ACR format to WAV pcm
Loaded: loaded (/etc/systemd/system/convert.service; static; vendor preset: disabled)
Active: inactive (dead) since Wed 2025-06-04 13:06:14 WIB; 32s ago
Process: 16942 ExecStart=/opt/witness/bin/convert_voice.sh (code=exited, status=0/SUCCESS)
Main PID: 16942 (code=exited, status=0/SUCCESS)
Jun 04 13:06:13 ccacr01 convert_voice.sh[16942]: encoder : Lavc61.3.100 pcm_u8
Jun 04 13:06:13 ccacr01 convert_voice.sh[16942]: [out#0/wav @ 0x78ccc00] video:0KiB audio:150KiB subtitle:0KiB other streams:0KiB global headers:0KiB muxing overhead: 0.050940%
Jun 04 13:06:13 ccacr01 convert_voice.sh[16942]: size= 150KiB time=00:00:19.14 bitrate= 64.0kbits/s speed= 455x
Jun 04 13:06:13 ccacr01 convert_voice.sh[16942]: --------------------------------------
Jun 04 13:06:14 ccacr01 convert_voice.sh[16942]: replace original file with converted file:
Jun 04 13:06:14 ccacr01 convert_voice.sh[16942]: mv -f /calls/834917/000/26/80/1.wav /calls/834917/000/26/80/834917000268060.wav
Jun 04 13:06:14 ccacr01 convert_voice.sh[16942]: /opt/witness/bin/convert_voice.sh: line 77: g729=pcm_u8: command not found
Jun 04 13:06:14 ccacr01 convert_voice.sh[16942]: store lastinum:
Jun 04 13:06:14 ccacr01 convert_voice.sh[16942]: echo 834917000268060 > /opt/witness/bin/lastinum.txt
Jun 04 13:06:14 ccacr01 convert_voice.sh[16942]: ======================================
Hint: Some lines were ellipsized, use -l to show in full.
[root@ccacr01 bin]#
[root@ccacr01 bin]# systemctl status convert.timer
● convert.timer - Check and convert voice every 1 minute
Loaded: loaded (/etc/systemd/system/convert.timer; enabled; vendor preset: disabled)
Active: active (waiting) since Fri 2025-05-23 18:49:33 WIB; 1 weeks 4 days ago
Warning: Journal has been rotated since unit was started. Log output is incomplete or unavailable.
[root@ccacr01 bin]#
dengan menggunakan cara ini, script convert_voice.sh akan di panggil secara berkala oleh timer service
OnUnitActiveSec=10 artinya script akan di panggil setiap 10 detik