Saya menemukan kode ini di /etc/cron.daily/apf
#!/bin/bash
/etc/apf/apf -f >> /dev/null 2>&1
/etc/apf/apf -s >> /dev/null 2>&1
Ini membilas dan memuat ulang firewall.
Saya tidak mengerti >> /dev/null 2>&1
bagiannya.
Apa tujuan memiliki ini di cron? Itu mengesampingkan aturan firewall saya. Bisakah saya menghapus pekerjaan cron ini dengan aman?
shell
syntax
posix
io-redirection
beristirahat
sumber
sumber
>&- 2>&-
.2>&1 > /dev/null
sama dengan> /dev/null 2>&1
? Sepertinya lebih alami bagi saya .../dev/null
—stderr yang akan tetap menjadi output. Coba alat ini di gist.github.com/zigg/344361751c0110419b0fJawaban:
>> /dev/null
mengalihkan keluaran standar (stdout
) ke/dev/null
, yang membuangnya.(
>>
Kelihatannya agak berlebihan, karena>>
berarti menambahkan sementara>
berarti memotong dan menulis, dan entah menambah atau menulis/dev/null
memiliki efek bersih yang sama. Saya biasanya hanya menggunakan>
untuk alasan itu.)2>&1
mengalihkan kesalahan standar (2
) ke output standar (1
), yang kemudian membuangnya juga karena output standar telah dialihkan.sumber
&
ditunjukkan oleh simbol di sana2>&1
.When redirecting data streams, & means whatever follows is a file descriptor, not a filename.
Mari kita pisahkan
>> /dev/null 2>&1
pernyataan menjadi beberapa bagian:Bagian 1:
>>
pengalihan outputIni digunakan untuk mengarahkan output program dan menambahkan output di akhir file. Lebih...
Bagian 2:
/dev/null
file khususIni adalah file khusus Pseudo-devices .
Perintah
ls -l /dev/null
akan memberi Anda detail file ini:Apakah kamu mengamati
crw
? Yang berarti itu adalah file pseudo-perangkat yang tipe -karakter-file khusus yang menyediakan akses serial.Bagian 3:
2>&1
deskriptor fileSetiap kali Anda menjalankan suatu program, sistem operasi selalu membuka tiga file, input standar, output standar, dan kesalahan standar seperti yang kita tahu setiap kali file dibuka, sistem operasi (dari kernel ) mengembalikan integer non-negatif yang disebut deskriptor file . Deskriptor file untuk file-file ini adalah 0, 1, dan 2, masing-masing.
Jadi
2>&1
sederhananya mengatakan redirect standard error ke output standar.Singkatnya, dengan menggunakan perintah ini Anda memberi tahu program Anda untuk tidak berteriak saat mengeksekusi.
Apa pentingnya menggunakan
2>&1
?Jika Anda tidak ingin menghasilkan output apa pun, bahkan dalam kasus beberapa kesalahan yang dihasilkan di terminal. Untuk menjelaskan lebih jelas, mari kita perhatikan contoh berikut:
Untuk perintah di atas, tidak ada output yang dicetak di terminal, tetapi bagaimana jika perintah ini menghasilkan kesalahan:
Meskipun saya mengarahkan output ke
/dev/null
, itu dicetak di terminal. Itu karena kita tidak mengarahkan output kesalahan/dev/null
, jadi untuk mengarahkan output kesalahan juga, kita perlu menambahkan2>&1
:sumber
>
operator redirection, apa pun yang mengikuti operator redirection diharapkan menjadi penambahan lokasi file&
sebelumnya1
menunjukkan bahwa itu bukan file di mana aplikasi harus mengarahkan output tetapi deskriptor file. Saya akan menghargai jika seseorang dapat menambahkan lebih detail dari komentar ini.Ini adalah cara untuk menjalankan program dengan diam-diam, dan menyembunyikan semua hasilnya.
/dev/null
adalah objek sistem file khusus yang membuang semua yang tertulis di dalamnya. Mengarahkan aliran ke dalamnya berarti menyembunyikan output program Anda.Bagian ini
2>&1
berarti "redirect aliran kesalahan ke aliran output", jadi ketika Anda mengarahkan aliran output, aliran kesalahan akan dialihkan juga. Bahkan jika program Anda menulisstderr
sekarang, output itu akan dibuang juga.sumber
2>&1
sebenarnya pengalihanstderr
kestdout
. Perbedaan antara ini dan apa yang Anda klaim paling baik diilustrasikan dengan menukar urutan arahan, misalnya2>&1 >/dev/null
./dev/null
adalah file standar yang membuang semua yang Anda tulis padanya, tetapi melaporkan bahwa operasi penulisan berhasil.1
adalah output standar dan2
kesalahan standar.2>&1
mengalihkan kesalahan standar ke output standar.&1
menunjukkan deskriptor file (output standar), jika tidak (jika Anda hanya menggunakan1
) Anda akan mengarahkan kesalahan standar ke file bernama1
.[any command] >>/dev/null 2>&1
mengalihkan semua kesalahan standar ke output standar, dan menulis semua itu ke/dev/null
.sumber
saya menggunakan
>> /dev/null 2>&1
untuk cronjob diam. Seorang cronjob akan melakukan pekerjaan itu, tetapi tidak mengirim laporan ke email saya.Sejauh yang saya tahu, jangan hapus
/dev/null
. Ini berguna, terutama ketika Anda menjalankan cPanel , ini dapat digunakan untuk membuang laporan cronjob.sumber
Seperti yang dijelaskan oleh yang lain, menulis ke / dev / null menghilangkan output dari suatu program. Biasanya cron mengirim email untuk setiap output dari proses yang dimulai dengan cronjob. Jadi dengan menulis output ke / dev / null Anda mencegah spam jika Anda telah menetapkan alamat Anda di cron.
sumber
Edit
/etc/conf.apf
. SetelDEVEL_MODE="0"
.DEVEL_MODE
diatur ke1
akan menambahkan tugas cron untuk menghentikan apf setelah 5 menit.sumber