A. Script dengan time
1. Pengurangan dalam format human time
[root@teguhth temp]# cat start_finish_time.sh
#!/bin/bash
# Menyimpan waktu mulai dalam format manusiawi
datex=$(date "+%Y-%m-%d %H:%M:%S.%N")
epoch_start=$(date +%s%N)
echo "trial time"
# Menyimpan waktu selesai dalam format manusiawi
datey=$(date "+%Y-%m-%d %H:%M:%S.%N")
epoch_end=$(date +%s%N)
# Menyimpan waktu mulai dan selesai dalam nanodetik (epoch) untuk perhitungan
# Menghitung selisih waktu dalam nanodetik
finish=$((epoch_end - epoch_start))
# Konversi nanodetik ke detik (opsional)
finish_seconds=$(echo "scale=9; $finish / 1000000000" | bc)
# Output hasil
echo "start $datex and end $datey selama $finish nanoseconds ($finish_seconds seconds)"
echo ""
echo "Copyright by : Teguh Triharto"
echo "Website : https://www.linkedin.com/in/teguhth"
echo ""
[root@teguhth temp]#
2. Pengurangan dalam format epoch time
[root@teguhth temp]# cat start_finish_epoch.sh
#!/bin/bash
# Menyimpan waktu mulai dalam nanodetik (epoch)
datex=$(date +%s%N)
echo "trial time"
# Menyimpan waktu selesai dalam nanodetik (epoch)
datey=$(date +%s%N)
# Menghitung selisih waktu dalam nanodetik
finish=$((datey - datex))
# Konversi nanodetik ke detik (opsional)
finish_seconds=$(echo "scale=9; $finish / 1000000000" | bc)
# Output hasil
echo "start $datex and end $datey selama $finish nanoseconds ($finish_seconds seconds)"
echo ""
echo "Copyright by : Teguh Triharto"
echo "Website : https://www.linkedin.com/in/teguhth"
echo ""
[root@teguhth temp]#
3. Convert Nano to second
[root@teguhth temp]# cat convert_nano_time.sh
#!/bin/bash
# Epoch time dalam nanodetik (contoh, Anda bisa menggantinya sesuai kebutuhan)
epoch_nano=1736922091765624095
# Memisahkan detik dan nanodetik
epoch_sec=$((epoch_nano / 1000000000)) # Bagian detik
nano_fraction=$((epoch_nano % 1000000000)) # Bagian nanodetik
# Konversi epoch detik ke format waktu manusiawi (YYYY-MM-DD HH:MM:SS)
human_time=$(date -d @"$epoch_sec" "+%Y-%m-%d %H:%M:%S")
# Menggabungkan format waktu manusiawi dengan nanodetik
human_time_with_nano="${human_time}.$nano_fraction"
# Output hasil
echo "Epoch nanodetik: $epoch_nano"
echo "Waktu manusiawi: $human_time_with_nano"
echo ""
echo "Copyright by : Teguh Triharto"
echo "Website : https://www.linkedin.com/in/teguhth"
echo ""
[root@teguhth temp]#
B. Scipt dengan with differentiation time
1. pengurangan waktu equivalent
[root@teguhth data]# cat start_finish_diff_equiv.sh
#!/bin/bash
# Menyimpan waktu mulai dalam format manusiawi
datex=$(date "+%Y-%m-%d %H:%M:%S.%N")
epoch_start=$(date +%s%N)
echo "trial time"
########
# Fungsi untuk menampilkan tampilan waiting
function show_waiting_page {
echo "Please wait while the process is running..."
while true; do
echo -n "."
sleep 1
done
}
# Menjalankan proses dalam background (simulasi proses)
function run_process {
echo "Simulating a long process..."
sleep 70 # Ganti dengan perintah nyata yang memerlukan waktu lama
}
# Menampilkan waiting page dalam background
show_waiting_page &
waiting_pid=$!
# Menjalankan proses utama
run_process
# Menghentikan tampilan waiting setelah proses selesai
kill $waiting_pid
echo -e "\nProcess completed successfully!"
###########
# Menyimpan waktu selesai dalam format manusiawi
datey=$(date "+%Y-%m-%d %H:%M:%S.%N")
epoch_end=$(date +%s%N)
# Menghitung selisih waktu dalam nanodetik
finish=$((epoch_end - epoch_start))
# Konversi nanodetik ke detik
finish_seconds=$(echo "scale=9; $finish / 1000000000" | bc)
# Menghitung tahun, bulan, hari, jam, menit, dan detik
years=$(echo "$finish_seconds / 31536000" | bc) # 1 tahun = 31536000 detik
remaining_seconds=$(echo "$finish_seconds % 31536000" | bc)
months=$(echo "$remaining_seconds / 2592000" | bc) # 1 bulan = 2592000 detik
remaining_seconds=$(echo "$remaining_seconds % 2592000" | bc)
days=$(echo "$remaining_seconds / 86400" | bc) # 1 hari = 86400 detik
remaining_seconds=$(echo "$remaining_seconds % 86400" | bc)
hours=$(echo "$remaining_seconds / 3600" | bc) # 1 jam = 3600 detik
remaining_seconds=$(echo "$remaining_seconds % 3600" | bc)
minutes=$(echo "$remaining_seconds / 60" | bc) # 1 menit = 60 detik
remaining_seconds=$(echo "$remaining_seconds % 60" | bc)
seconds=$remaining_seconds
# Output hasil
echo "start $datex and end $datey selama $finish nanoseconds ($finish_seconds detik)"
echo "Equivalent time: $years tahun, $months bulan, $days hari, $hours jam, $minutes menit, $seconds detik"
echo ""
echo "Copyright by : Teguh Triharto"
echo "Website : https://www.linkedin.com/in/teguhth"
echo ""
[root@teguhth data]#
2. pengurangan waktu equivalent date n time
[root@teguhth data]# cat start_finish_diff_time.sh
#!/bin/bash
# Menyimpan waktu mulai dalam format manusiawi
datex=$(date "+%Y-%m-%d %H:%M:%S.%N")
epoch_start=$(date +%s%N)
echo "trial time"
########
# Fungsi untuk menampilkan tampilan waiting
function show_waiting_page {
echo "Please wait while the process is running..."
while true; do
echo -n "*"
sleep 1
done
}
# Menjalankan proses dalam background (simulasi proses)
function run_process {
echo "Simulating a long process..."
sleep 70 # Ganti dengan perintah nyata yang memerlukan waktu lama
}
# Menampilkan waiting page dalam background
show_waiting_page &
waiting_pid=$!
# Menjalankan proses utama
run_process
# Menghentikan tampilan waiting setelah proses selesai
kill $waiting_pid
echo -e "\nProcess completed successfully!"
###########
# Menyimpan waktu selesai dalam format manusiawi
datey=$(date "+%Y-%m-%d %H:%M:%S.%N")
epoch_end=$(date +%s%N)
# Menghitung selisih waktu dalam nanodetik
finish=$((epoch_end - epoch_start))
# Konversi nanodetik ke detik menggunakan bc
finish_seconds=$(echo "scale=9; $finish / 1000000000" | bc)
# Menghitung hari, jam, menit, dan detik dari total detik menggunakan bc
days=$(echo "$finish_seconds / 86400" | bc) # 1 hari = 86400 detik
remaining_seconds=$(echo "$finish_seconds % 86400" | bc)
hours=$(echo "$remaining_seconds / 3600" | bc) # 1 jam = 3600 detik
remaining_seconds=$(echo "$remaining_seconds % 3600" | bc)
minutes=$(echo "$remaining_seconds / 60" | bc) # 1 menit = 60 detik
seconds=$(echo "$remaining_seconds % 60" | bc) # Menggunakan bc untuk menghitung detik
# Output hasil dengan format "tanggal dan waktu"
echo "start $datex and end $datey selama $finish nanoseconds ($finish_seconds detik)"
echo "Equivalent time: $days hari, $hours jam, $minutes menit, $seconds detik"
echo ""
# Konversi finish_seconds menjadi tanggal dan waktu dalam format yang lebih spesifik
#future_date=$(date -d "@$finish_seconds" "+%Y-%m-%d %H:%M:%S.%N")
# Durasi dalam detik (misalnya 70.011107888 detik)
duration_seconds=$finish_seconds
# Pisahkan detik dan pecahan detik
integer_seconds=$(echo "$duration_seconds" | cut -d '.' -f 1) # Bagian utuh (detik)
fractional_seconds=$(echo "$duration_seconds" | cut -d '.' -f 2) # Bagian pecahan detik
# Hitung jam, menit, dan detik
hours=$((integer_seconds / 3600))
minutes=$(((integer_seconds % 3600) / 60))
seconds=$((integer_seconds % 60))
# Format output
formatted_time=$(printf "%d:%02d:%02d.%s" "$hours" "$minutes" "$seconds" "$fractional_seconds")
echo "Tanggal dan waktu setelah $finish_seconds detik atau $formatted_time"
echo ""
echo "Copyright by : Teguh Triharto"
echo "Website : https://www.linkedin.com/in/teguhth"
echo ""
[root@teguhth data]#
2020-03-22 08:34:10.002517536 ->>> Start Process
Simulating a long process...
Please wait while the process is running...
**********
Process completed successfully!
simple_diff_time.sh: line 42: 11436 Terminated show_waiting_page
2025-01-31 08:34:07.183838778 ->>> Finish Process
Duration Process
Start : 2020-03-22 08:34:10.002517536
Finish : 2025-01-31 08:34:07.183838778
Duration 1 : 1775:23:59:57
Duration 2 : 4 Tahun, 10 Bulan, 15 Hari, 23:59:57
Copyright by : Teguh Triharto
Website : https://www.linkedin.com/in/teguhth
[root@teguhth time]#
[root@teguhth time]# cat simple_diff_time.sh
#!/bin/bash
# Menyimpan waktu mulai dalam format manusiawi
# For Test
# timedatectl set-time "2020-03-22 08:34:00"
datex=$(date "+%Y-%m-%d %H:%M:%S.%N")
#epoch_start='1580390912'
epoch_start=$(date +%s) # Gunakan detik saja, jangan nanodetik
echo "$datex ->>> Start Process"
# For Test
# timedatectl set-time "2025-01-31 08:34:00"
# vmware-toolbox-cmd timesync enable
######## Script Begin ########
# Fungsi untuk menampilkan tampilan waiting
function show_waiting_page {
echo "Please wait while the process is running..."
while true; do
echo -n "*"
sleep 1
done
}
# Menjalankan proses dalam background (simulasi proses)
function run_process {
echo "Simulating a long process..."
sleep 40 # Simulasi proses yang lebih lama
}
# Menampilkan waiting page dalam background
show_waiting_page &
waiting_pid=$!
# Menjalankan proses utama
run_process
# Menghentikan tampilan waiting setelah proses selesai
kill $waiting_pid
echo -e "\nProcess completed successfully!"
######## Script Finish ########
# Menyimpan waktu selesai dalam format manusiawi
datey=$(date "+%Y-%m-%d %H:%M:%S.%N")
epoch_end=$(date +%s) # Gunakan detik saja
#epoch_end='1738253312'
echo "$datey ->>> Finish Process"
# Menghitung selisih waktu dalam detik
finish=$((epoch_end - epoch_start))
# Menghitung hari, jam, menit, dan detik
days=$((finish / 86400))
hours=$(((finish % 86400) / 3600))
minutes=$(((finish % 3600) / 60))
seconds=$((finish % 60))
# Konversi ke tahun, bulan, hari, jam, menit, dan detik
yearsx=$((finish / 31536000)) # 1 tahun = 365 * 24 * 3600 detik
remaining=$((finish % 31536000))
monthsx=$((remaining / 2592000)) # 1 bulan = 30 * 24 * 3600 detik
remaining=$((remaining % 2592000))
daysx=$((remaining / 86400)) # 1 hari = 86400 detik
remaining=$((remaining % 86400))
hoursx=$((remaining / 3600)) # 1 jam = 3600 detik
remaining=$((remaining % 3600))
minutesx=$((remaining / 60)) # 1 menit = 60 detik
secondsx=$((remaining % 60))
# Format output
formatted_time=$(printf "%d:%02d:%02d:%02d" "$days" "$hours" "$minutes" "$seconds")
# Format output
formatted_time2=$(printf "%d Tahun, %d Bulan, %d Hari, %02d:%02d:%02d" "$yearsx" "$monthsx" "$daysx" "$hoursx" "$minutesx" "$secondsx")
echo "Duration Process"
echo "Start : $datex"
echo "Finish : $datey"
echo "Duration 1 : $formatted_time"
echo "Duration 2 : $formatted_time2"
echo ""
echo "Copyright by : Teguh Triharto"
echo "Website : https://www.linkedin.com/in/teguhth"
echo ""
[root@teguhth time]#
4. For Testing to get data
Open Console 1
[root@teguhth time]# timedatectl set-time "2020-03-22 08:34:00"[root@teguhth time]#
[root@teguhth time]# sh simple_diff_time.sh
2020-03-22 08:34:31.765374895 ->>> Start Process
Simulating a long process...
Please wait while the process is running...
**********
Process completed successfully!
simple_diff_time.sh: line 42: 3742 Terminated show_waiting_page
2025-01-31 08:34:07.001188793 ->>> Finish Process
Duration Process
Start : 2020-03-22 08:34:31.765374895
Finish : 2025-01-31 08:34:07.001188793
Duration 1 : 1775:23:59:36
Duration 2 : 4 Tahun, 10 Bulan, 15 Hari, 23:59:36
Copyright by : Teguh Triharto
Website : https://www.linkedin.com/in/teguhth
[root@teguhth time]#
Open Console 2 ( run before finish simple_diff_time.sh)
timedatectl set-time "2025-01-31 08:34:00"
timedatectl set-time "2025-01-31 08:34:00"
5. Simple test duration
[root@teguhth time]# cat simple_duration.sh
#!/bin/bash
epoch_start=$(date +%s) # Gunakan detik saja, jangan nanodetik
######## Script Begin ########
# Fill Script to check ###
######## Script Finish ########
# Menyimpan waktu selesai dalam format manusiawi
epoch_end=$(date +%s) # Gunakan detik saja
# Menghitung selisih waktu dalam detik
finish=$((epoch_end - epoch_start))
# Menghitung hari, jam, menit, dan detik
days=$((finish / 86400))
hours=$(((finish % 86400) / 3600))
minutes=$(((finish % 3600) / 60))
seconds=$((finish % 60))
# Format output
formatted_time=$(printf "%d:%02d:%02d:%02d" "$days" "$hours" "$minutes" "$seconds")
echo "Duration Process"
echo "Duration : $formatted_time"
echo ""
echo "Copyright by : Teguh Triharto"
echo "Website : https://www.linkedin.com/in/teguhth"
echo ""
[root@teguhth time]#
#!/bin/bash
epoch_start=$(date +%s) # Gunakan detik saja, jangan nanodetik
######## Script Begin ########
# Fill Script to check ###
######## Script Finish ########
# Menyimpan waktu selesai dalam format manusiawi
epoch_end=$(date +%s) # Gunakan detik saja
# Menghitung selisih waktu dalam detik
finish=$((epoch_end - epoch_start))
# Menghitung hari, jam, menit, dan detik
days=$((finish / 86400))
hours=$(((finish % 86400) / 3600))
minutes=$(((finish % 3600) / 60))
seconds=$((finish % 60))
# Format output
formatted_time=$(printf "%d:%02d:%02d:%02d" "$days" "$hours" "$minutes" "$seconds")
echo "Duration Process"
echo "Duration : $formatted_time"
echo ""
echo "Copyright by : Teguh Triharto"
echo "Website : https://www.linkedin.com/in/teguhth"
echo ""
[root@teguhth time]#
No comments:
Post a Comment