( sleep 300 ; echo "80" > /sys/class/leds/blue/brightness ) &
Dengan begitu skrip Anda berlanjut, atau Anda segera memulihkan kontrol, sementara tugas latar belakang baru skrip dimulai, dengan dua perintah:tidur, dan gema.
Kesalahan umum adalah mencoba memberikan sleep
atau echo
atau keduanya &
yang tidak akan berfungsi sebagaimana mestinya. Meluncurkan serangkaian perintah di ()
meskipun memunculkannya dalam proses shell terpisah, yang kemudian dapat Anda kirim seluruhnya ke latar belakang dengan &
.
Untuk itu, di mana saya menemukan itu berguna secara aktif. Di perangkat tersemat yang saya kembangkan, ada aplikasi utama yang berfungsi dengan pengawas. Jika gagal dengan cara yang memicu reset pengawas segera setelah startup, berulang kali, sulit untuk memperbaikinya dari jarak jauh karena periode antara OS mulai dan reset cukup singkat, tidak cukup untuk ssh, dan memblokir startup aplikasi. Jadi saya memerlukan cara untuk menentukan sistem dimulai ulang dengan sangat cepat dan memperkenalkan penundaan jika itu terjadi, untuk memberi saya waktu untuk memperbaikinya secara manual.
[ -f /tmp/startdelay ] && sleep 30
touch /tmp/startdelay
( sleep 30 ; rm /tmp/startdelay ) &
[ -f /tmp/noautostart ] && exit 0
start_app
Jika saya masuk dan melakukan touch /tmp/noautostart
aplikasi utama tidak akan mulai. Jika pengawas masuk, rm /tmp/startdelay
tidak akan dilakukan dan saat berikutnya sistem dimulai, saya akan diberi waktu 30 detik ekstra untuk menghentikannya. Jika tidak, restart akan cepat, tanpa penundaan.
gunakan at
perintah
echo "echo \"80\" > /sys/class/leds/blue/brightness" | at now + 5 min
yang akan berjalan di latar belakang
Jika Anda ingin sesuatu berjalan dalam 5 menit, tetapi sisa program Anda berlanjut (atau selesai), Anda juga perlu membuat tidur di latar belakang:
#!/bin/bash
runWithDelay () {
sleep $1;
shift;
"${@}";
}
runWithDelay 3 echo world &
echo hello
Ini akan mencetak hello
dan kemudian 3 detik kemudian (setelah program utama keluar), cetak world
.
Bagian yang penting adalah &
untuk memotong eksekusi fungsi ke latar belakang.