GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana cara menjalankan perintah di latar belakang dengan penundaan?

( 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.


Linux
  1. Cara mengaudit izin dengan perintah find

  2. Bagaimana cara mengirim aplikasi baris perintah langsung ke latar belakang?

  3. Cara menggabungkan perintah 'tar' dengan 'find'

  1. Bagaimana Menjalankan Perintah Sebagai Administrator Sistem (root)?

  2. Bagaimana saya bisa menjalankan perintah yang berbeda tetapi dengan argumen yang sama?

  3. Bagaimana cara menjalankan perintah Vim dari shell?

  1. Cara Menggunakan Perintah w di Linux dengan Contoh

  2. Cara Menggunakan Perintah chgrp dengan Contoh

  3. Cara Menemukan File di Linux Dengan Perintah Temukan