• Refresh VPS No Reboot

    Refresh VPS No Reboot
    Halo sobat,kali ini kita akan membuat sebuah panel menu auto refresh dengan penjadwalan yang bisa di atur,mulai dari 1 jam sampai dengan 1 bulan.Sebagai admin sebuah server atau VPS terkadang kita perlu merefresh cpu.ram dan ruang swap untuk suatu tujuan tetapi tanpa perlu mereboot server atau VPS.
    Sebelum kita memulai langkah-langkah pembuatan panel menu Refresh VPS No Reboot,anda harus berada pada akses root,dan sistem operasi yang saya gunakan saat membuat tutorial ini adalah ubuntu server 20.04 lts.Cara ini juga bisa di gunakan sampai pada versi ubuntu 24.04 lts ,untuk versi ubuntu server di atasnya saya belum pernah mencoba nya.
    Berikut Panduan Lengkap Membuat Menu fresh dengan Auto-Refresh dan Status Checker
    Langkah 1: Membuat File Script fresh :
    Kita akan membuat file script baru yang sudah diperbarui dengan opsi penjadwalan yang lebih banyak.
    1.Buka editor teks nano:
    2.Salin seluruh kode di bawah ini, lalu tempel ke dalam editor nano.
    #!/bin/bash
    
    # --- Script Menu Refresh Sistem dengan Auto-Scheduler & Status Checker (Versi Perpanjangan) ---
    # Nama: fresh
    # Fungsi: Menu interaktif untuk merefresh CPU, RAM, Swap, penjadwalan, dan status
    # Author: AI Assistant
    # -------------------------------------------------------------------------
    
    # Fungsi untuk menjalankan refresh otomatis (tanpa interaksi)
    run_auto_refresh() {
        echo "$(date): Memulai auto-refresh..." >> /var/log/fresh-auto.log
        sync
        echo 3 > /proc/sys/vm/drop_caches
        swapoff -a
        swapon -a
        echo "$(date): Auto-refresh selesai." >> /var/log/fresh-auto.log
    }
    
    # Cek argumen --auto untuk mode otomatis
    if [ "$1" == "--auto" ]; then
        run_auto_refresh
        exit 0
    fi
    
    # Cek apakah script dijalankan dengan sudo (untuk mode interaktif)
    if [ "$(id -u)" -ne 0 ]; then
       echo -e "\e[31mError: Script ini harus dijalankan dengan hak akses root (sudo).\e[0m" >&2
       exit 1
    fi
    
    # Fungsi untuk menampilkan menu utama
    tampilkan_menu() {
        clear
        echo -e "\e[36m========================================\e[0m"
        echo -e "\e[1;32m        MENU REFRESH SISTEM VPS       \e[0m"
        echo -e "\e[36m========================================\e[0m"
        echo "Pilih tindakan yang ingin dilakukan:"
        echo "1. Kelola Proses CPU (buka htop)"
        echo "2. Refresh RAM (Hapus Cache)"
        echo "3. Refresh Swap"
        echo "4. Refresh Semua (RAM + Swap)"
        echo "5. Lihat Status Memori Saat Ini"
        echo "6. Jadwalkan Auto Refresh"
        echo "7. Cek Status Auto Refresh"
        echo "0. Keluar"
        echo -e "\e[36m----------------------------------------\e[0m"
    }
    
    # Fungsi untuk menu penjadwalan
    menu_scheduler() {
        while true; do
            clear
            echo -e "\e[36m========================================\e[0m"
            echo -e "\e[1;34m       MENU JADWAL AUTO REFRESH       \e[0m"
            echo -e "\e[36m========================================\e[0m"
            echo "Pilih interval waktu:"
            echo "1. Setiap 1 Jam"
            echo "2. Setiap 3 Jam"
            echo "3. Setiap 6 Jam"
            echo "4. Setiap 12 Jam"
            echo "5. Setiap 24 Jam (1 Hari)"
            echo "6. Setiap 1 Minggu"
            echo "7. Setiap 2 Minggu"
            echo "8. Setiap 1 Bulan"
            echo "9. Hapus Semua Jadwal"
            echo "0. Kembali ke Menu Utama"
            echo -e "\e[36m----------------------------------------\e[0m"
            read -p "Masukkan pilihan Anda: " pilihan_sched
    
            case $pilihan_sched in
                1) cron_interval="0 * * * *"; break ;; # Setiap jam penuh
                2) cron_interval="0 */3 * * *"; break ;; # Setiap 3 jam
                3) cron_interval="0 */6 * * *"; break ;; # Setiap 6 jam
                4) cron_interval="0 */12 * * *"; break ;; # Setiap 12 jam
                5) cron_interval="0 0 * * *"; break ;; # Setiap hari pukul 00:00
                6) cron_interval="0 0 * * 0"; break ;; # Setiap Minggu pukul 00:00
                7) cron_interval="0 0 */14 * *"; break ;; # Setiap 14 hari (2 minggu)
                8) cron_interval="0 0 1 * *"; break ;; # Setiap bulan pukul 00:00 tanggal 1
                9)
                    echo "Menghapus semua jadwal 'fresh --auto'..."
                    (crontab -l 2>/dev/null | grep -v "fresh --auto") | crontab -
                    echo -e "\e[32mSemua jadwal berhasil dihapus.\e[0m"
                    pause
                    return
                    ;;
                0) return ;;
                *) 
                    echo -e "\e[31mPilihan tidak valid.\e[0m"
                    pause
                    ;;
            esac
        done
    
        # Tambahkan ke crontab
        cron_job="$cron_interval sudo /usr/local/bin/fresh --auto >> /var/log/fresh-auto.log 2>&1"
        echo "Menambahkan jadwal baru ke crontab..."
        (crontab -l 2>/dev/null; echo "$cron_job") | crontab -
        
        echo -e "\e[32mJadwal berhasil dibuat!\e[0m"
        echo "Log akan disimpan di /var/log/fresh-auto.log"
        pause
    }
    
    # Fungsi untuk mengecek status auto-refresh
    cek_status_auto_refresh() {
        clear
        echo -e "\e[36m========================================\e[0m"
        echo -e "\e[1;35m       STATUS AUTO REFRESH            \e[0m"
        echo -e "\e[36m========================================\e[0m"
        
        if crontab -l 2>/dev/null | grep -q "fresh --auto"; then
            echo -e "\e[32mStatus: AKTIF\e[0m"
            echo ""
            echo "Jadwal yang sedang berjalan:"
            crontab -l 2>/dev/null | grep --color=auto "fresh --auto"
        else
            echo -e "\e[31mStatus: TIDAK AKTIF\e[0m"
            echo ""
            echo "Tidak ada jadwal auto-refresh yang ditemukan."
        fi
        echo ""
        echo -e "\e[33mLog dapat dilihat di: /var/log/fresh-auto.log\e[0m"
        echo -e "\e[36m----------------------------------------\e[0m"
        pause
    }
    
    # Fungsi untuk pause
    pause() {
        read -p "Tekan [Enter] untuk melanjutkan..."
    }
    
    # Loop utama program
    while true; do
        tampilkan_menu
        read -p "Masukkan pilihan Anda [1-7] atau 0 untuk keluar: " pilihan
    
        case $pilihan in
            1)
                echo -e "\e[33mMembuka htop untuk mengelola proses CPU...\e[0m"
                pause
                htop
                ;;
            2)
                echo -e "\e[33mMembersihkan cache RAM...\e[0m"
                sync && echo 3 > /proc/sys/vm/drop_caches
                echo -e "\e[32mCache RAM berhasil dibersihkan.\e[0m"
                pause
                ;;
            3)
                echo -e "\e[31mPERINGATAN: Pastikan RAM Anda mencukupi!\e[0m"
                free -h
                read -p "Apakah Anda yakin ingin melanjutkan? (y/n) " konfirmasi
                if [[ $konfirmasi =~ ^[Yy]$ ]]; then
                    swapoff -a && swapon -a
                    echo -e "\e[32mSwap berhasil direfresh.\e[0m"
                else
                    echo "Operasi dibatalkan."
                fi
                pause
                ;;
            4)
                echo -e "\e[31mPERINGATAN: Ini akan membersihkan cache RAM dan merefresh Swap.\e[0m"
                free -h
                read -p "Apakah Anda yakin ingin melanjutkan? (y/n) " konfirmasi
                if [[ $konfirmasi =~ ^[Yy]$ ]]; then
                    run_auto_refresh
                    echo -e "\e[32mSemua proses refresh selesai!\e[0m"
                else
                    echo "Operasi dibatalkan."
                fi
                pause
                ;;
            5)
                echo -e "\e[33mStatus Memori Saat Ini:\e[0m"
                free -h
                echo ""
                echo -e "\e[33mPenggunaan Swap:\e[0m"
                swapon --show
                pause
                ;;
            6)
                menu_scheduler
                ;;
            7)
                cek_status_auto_refresh
                ;;
            0)
                echo -e "\e[32mTerima kasih! Sampai jumpa.\e[0m"
                exit 0
                ;;
            *)
                echo -e "\e[31mPilihan tidak valid, silakan coba lagi.\e[0m"
                pause
                ;;
        esac
    done
    3.Simpan file dan keluar dari nano:
    Tekan Ctrl + X.
    Tekan Y untuk konfirmasi.
    Tekan Enter.
    Langkah 2: Memberikan Izin Eksekusi
    sudo chmod +x /usr/local/bin/fresh
    Langkah 3: Konfigurasi sudo Tanpa Password (untuk User root)
    Meskipun Anda adalah user root, menambahkan aturan eksplisit ke sudoers adalah praktik yang baik untuk memastikan script berjalan sesuai harapan.
    1.Edit File sudoers:
    sudo visudo
    2.Tambahkan Aturan Baru. Gulir ke bagian bawah dan tambahkan baris ini:
    # Mengizinkan root menjalankan script fresh tanpa password
    root ALL=(ALL) NOPASSWD: /usr/local/bin/fresh
    3.Simpan dan Keluar:
    Tekan Ctrl + X, lalu Y, dan Enter.
    Langkah 4: Cara Menggunakan Menu fresh yang Baru
    1.Jalankan Menu:
    nano /usr/bin/panel
    2.Eksplorasi Menu:
    Opsi 1-5: Fitur manual seperti sebelumnya.
    Opsi 6: Untuk membuat atau menghapus jadwal auto-refresh.
    Opsi 7 (Baru): Untuk mengecek status.
    Jika aktif, akan menampilkan Status: AKTIF beserta jadwal cron-nya.
    Jika tidak aktif, akan menampilkan Status: TIDAK AKTIF.
    Sekarang, semua fitur sudah siap digunakan.
  • My Profile In Youtube

    ADDRESS

    Jalan Raya Badau Km.11 Rt.06/02 Tanjung Pandan Belitung 33451

    EMAIL

    purwana.cecep@gmail.com
    uraxarixteamxxx@gmail.com

    Telephone

    +628197887769