Bisakah Anda benar-benar menggunakan Terminal untuk crash komputer Anda?

48

Orang-orang yang tidak mengerti Terminal sering takut menggunakannya karena takut mereka akan mengacaukan perintah mereka dan merusak komputer mereka. Mereka yang tahu Terminal lebih tahu bahwa bukan itu masalahnya - biasanya Terminal hanya akan menampilkan kesalahan. Tapi adakah sebenarnya perintah yang akan membuat crash komputer Anda?

PERINGATAN: Anda bisa kehilangan data jika Anda mengetik ini atau menyalin pasta, terutama sudodan rmperintah.

DonielF
sumber
Seseorang secara tidak sengaja menghapus semua komputer perusahaannya dalam satu baris, saya melihatnya di situs ini beberapa tahun yang lalu, itu palsu tetapi, masih bisa dengan mudah terjadi. Saya akan menautkan jika saya dapat menemukannya.
Noah Cristino
7
Terminal hanyalah antarmuka baris perintah untuk menjalankan program. Ini adalah alternatif untuk antarmuka pengguna grafis . Anda dapat menjalankan program sewenang-wenang dari salah satunya. Karena itu pertanyaan Anda tidak terlalu masuk akal; Anda malah harus bertanya: Bisakah Anda membuat crash komputer Anda dengan menjalankan program?
jamesdlin
Apa yang Anda maksud dengan "crash"? Perintah yang dijalankan di terminal sering kali sangat kuat dan akan sering "melakukan apa yang Anda katakan dan bukan apa yang Anda maksudkan" tanpa bertanya, tidak seperti kebanyakan perintah Mac OS X GUI. Tetapi kecuali jika Anda sengaja mencoba , Anda tidak akan menabrak mesin. (Namun saya dapat memikirkan beberapa cara untuk melakukannya dengan sengaja)
Josh
1
Menempelkan perintah dari web bisa sangat berbahaya . Terlepas dari kemungkinan untuk menggantung mesin Anda. Mengetik perintah yang Anda mengerti setidaknya secara samar-samar seharusnya tidak berbahaya. Kalau tidak, banyak cara untuk mengacaukan komputer Anda. Ini seperti mengklik pengaturan konfigurasi sistem acak di GUI tetapi di GUI setidaknya kemungkinan lebih terbatas. wrt bahayanya menempel perintah - teks yang Anda lihat disalin secara visual dapat berbeda dari teks yang disalin, sehingga dapat berisi perintah jahat yang dicampurkan.
akostadinov
@ иσαнcяişтiпσ Mungkin serverfault.com/questions/769357/recovering-dari-a-rm-rf
wythagoras

Jawaban:

51

Salah satu cara untuk menabrak komputer adalah dengan mengeksekusi bom fork .

Anda dapat menjalankannya di unix-sytem dengan:

:(){ :|: & };:

Ini adalah perintah yang akan menelurkan proses secara rekursif sampai OS sangat sibuk sehingga tidak akan menanggapi tindakan apa pun lagi.

Rick van Hal
sumber
49
@bunyaCloven jika saya memahami perintah Anda dengan benar, maka itu adalah perintah untuk menghapus semua folder tanpa diminta , yang sangat berbahaya jika berhasil . Saya harap Anda menulis pemberitahuan peringatan untuk itu.
Andrew T.
80
@AndrewT. Orang seharusnya tidak cukup mengetik perintah acak yang mereka temukan di Internet. (terutama yang ada di utas yang disebut "bisakah Anda menabrak komputer Anda melalui terminal")
John Hamilton
34
OP meminta crash dari terminal, bukan lap.
piersb
16
Bom fork sebenarnya akan melakukan kerusakan minimal pada Mac OS X karena memiliki batas atas untuk sejumlah proses.
GDP2
7
@bunyaCloven ganti ;dengan &dan Anda bisa menghapus semua file dan bom pada waktu yang bersamaan, dan lihat mana yang merusak sistem lebih dulu!
Muzer
41

Tidak yakin apa yang Anda maksud tentang 'menabrak' komputer - jika Anda ingin mengucapkannya kembali dengan mengatakan 'render komputer tidak dapat digunakan', maka ya. Tentu saja yang diperlukan hanyalah perintah sesat - hanya saat di mana Anda tidak berpikir jernih tentang apa yang Anda lakukan, mirip dengan ketika Anda berbicara tanpa berpikir, dan kerusakannya bisa sangat besar dan hampir seketika. Contoh klasik:

$ sudo rm -rf /

Jika Anda membiarkan perintah itu berjalan hanya dalam satu detik, itu dapat menghapus cukup banyak sistem Anda untuk membuatnya tidak bisa di-boot, dan mungkin menyebabkan kehilangan data yang tidak dapat dikembalikan lagi. Jangan lakukan itu.

Harv
sumber
2
Dan hanya untuk berbagi mengapa saya ingin mengklarifikasi ulang frasa .. untuk 'menabrak' komputer dalam pengertian tradisional - untuk membuatnya terkunci - Anda harus memberikan CPU pekerjaan yang cukup untuk melakukan itu sehingga tidak dapat merespons secara tepat waktu ke pekerjaan lain .. seperti memperbarui grafik dan memindahkan kursor, misalnya. Saya yakin ada cara untuk melakukan itu dari command-line.
Harv
6
@DonielF -rberarti menghapus file secara rekursif dalam direktori. -fberarti "memaksa" seperti dalam jangan meminta konfirmasi, terlepas dari izin file yang diberikan. /adalah direktori root dari sistem file, yang berarti ia akan menghancurkan apa saja dan segalanya, kecuali mungkin beberapa file khusus yang tidak berperilaku seperti file biasa. Selain itu, Anda akan kesulitan menemukan perintah singkat yang akan merusak sistem Anda tanpa izin root / admin.
GDP2
11
Saya mencoba rm -rf /beberapa waktu lalu, dan rmmengatakan bahwa jika Anda ingin menghapus root, maka gunakan flag ini-dan-itu. Tidak ada data yang hilang. Sepertinya ada perlindungan keamanan sekarang dari berjalan membabi buta rm -rf /.
alexyorke
27
--tidak ada flag-root-root telah diperlukan sejak 2006 agar ini berfungsi sebagaimana dimaksud
Encaitar
6
Inilah kasus dunia nyata di mana ini benar-benar terjadi - yang rm -rf sangat mirip dengan yang legal, yang benar-benar salah: /
mgarciaisaia
30

Misalkan Anda tidak tahu apa yang Anda lakukan dan berusaha melakukan backup dari beberapa hard drive

dd if=/dev/disk1 of=/dev/disk2 

Nah jika Anda mencampurnya (beralih jika dan dari), itu akan menimpa data baru dengan data lama, tidak ada pertanyaan.

Campuran yang serupa dapat terjadi dengan utilitas arsip. Dan terus terang dengan sebagian besar utilitas baris perintah.

Jika Anda ingin contoh campuran satu karakter yang akan crash sistem Anda lihat skenario ini: Anda ingin memindahkan semua file di direktori saat ini ke yang lain:

 mv -f ./* /path/to/other/dir

Mari kita terima fakta yang telah Anda pelajari ./untuk menunjukkan direktori saat ini. (Saya lakukan) Nah jika Anda menghilangkan titik, itu akan mulai memindahkan semua file Anda. Termasuk file sistem Anda. Anda beruntung tidak sudo ini. Tetapi jika Anda membaca di suatu tempat bahwa dengan 'sudo -i' Anda tidak akan lagi harus mengetikkan sudo Anda login sebagai root sekarang. Dan sekarang sistem Anda makan sendiri di depan mata Anda.

Tapi sekali lagi saya pikir hal-hal seperti menimpa file kode berharga saya dengan sampah, karena saya mengacaukan satu karakter atau karena saya mencampur urutan parameter, lebih banyak masalah.

Katakanlah saya ingin memeriksa kode assembler yang dihasilkan gcc:

gcc -S program.c > program.s

Misalkan saya sudah memiliki program.s dan saya menggunakan penyelesaian TAB. Saya sedang terburu-buru dan lupa untuk TAB dua kali:

gcc -S program.c > program.c

Sekarang saya memiliki kode assembler di program.c saya dan tidak ada kode c lagi. Yang paling tidak merupakan kemunduran nyata bagi sebagian orang, tetapi bagi yang lain ini merupakan awal-dari-awal-waktu.

Saya pikir ini adalah orang-orang yang akan menyebabkan "kerusakan" nyata. Saya tidak terlalu peduli jika sistem saya crash. Saya akan peduli dengan data saya yang hilang.

Sayangnya ini adalah kesalahan yang harus dilakukan sampai Anda belajar menggunakan terminal dengan tindakan pencegahan yang tepat.

MrPaulch
sumber
16
Poin terakhir Anda adalah salah satu dari banyak alasan mengapa semua orang harus menggunakan kontrol versi
Darren H
4
Saya pernah menghancurkan sebuah program yang sedang saya kerjakan menggunakan gcc program.c -o program.cterima kasih tepatnya untuk penyelesaian tab. Saya belajar menggunakan kontrol versi secara agama setelah itu.
nneonneo
2
Jawaban terbaik sejauh ini, memposting perintah yang tampak sah yang bisa menjadi hasil kesalahan ketik yang sederhana namun dapat mengakibatkan kerusakan besar.
gaazkam
1
"Sekarang saya memiliki kode assembler di program saya. C" Tidak. Anda tidak punya apa-apa. Pengalihan memotong file sebelum GCC bahkan membukanya.
muru
1
Ya ampun, saya sebenarnya sangat senang mereka menambahkan bahwa peningkatan antarmuka pengguna di GCC. Sudah lama sejak kesalahan terakhir saya, tapi senang melihat bahwa saya akan memiliki sedikit perlindungan dari waktu berikutnya.
nneonneo
28

Menyebabkan panik kernel lebih mirip dengan menabrak daripada jawaban lain yang saya lihat di sini sejauh ini:

sudo dtrace -w -n "BEGIN{ panic();}"

(kode diambil dari sini dan juga ditemukan di dokumentasi Apple sendiri )

Anda mungkin juga mencoba:

sudo killall kernel_task

Saya belum memverifikasi bahwa yang kedua benar-benar berfungsi (dan saya tidak berniat karena saya benar-benar membuka beberapa pekerjaan saat ini).

GDP2
sumber
2
Baru saja mencoba yang kedua dalam VM 10.12.3, dan hanya mengatakan:No matching processes were found
Alexander O'Mara
3
Juga, yang pertama tampaknya tidak berfungsi, setidaknya jika SIP diaktifkan,dtrace: system integrity protection is on, some features will not be available dtrace: description 'BEGIN' matched 1 probe dtrace: could not enable tracing: Permission denied
Alexander O'Mara
@ AlexanderO'Mara Tidak terlalu terkejut dengan hasil Anda pada perintah kedua; Saya pikir Mac OS X tidak akan mengizinkan Anda untuk menghapus proses kernel sedemikian rupa. Hasil untuk perintah pertama juga diharapkan, seperti dtraceyang secara efektif dikebiri oleh SIP.
GDP2
1
kernel_taskbukan proses normal. Itu abadi; Itu tidak dapat dibunuh kecuali melalui kesalahan sendiri (dan itu akan disebut KP dan membawa seluruh mesin ke bawah). kernel_taskPID adalah nominal 0, tetapi jika Anda memberikannya ke kill(pid, sig)syscall, halaman manual mengatakan Jika pidsama dengan 0, maka sigdikirim ke setiap proses dalam grup proses dari proses pemanggilan. . Jadi, Anda tidak dapat mengirim kernel_tasksinyal.
Iwillnotexist Idonotexist
@IwillnotexistIdonotexist Ya, saya pikir akan banyak yang terjadi; terima kasih atas informasinya. Hal-hal baik yang ada dalam pikiran.
GDP2
19

MacOS modern membuatnya sangat sulit untuk crash mesin Anda sebagai pengguna yang tidak memiliki hak (yaitu tanpa menggunakan sudo), karena sistem UNIX dimaksudkan untuk menangani ribuan pengguna tanpa membiarkan mereka menghancurkan seluruh sistem. Jadi, untungnya, Anda biasanya harus diminta sebelum Anda melakukan sesuatu yang menghancurkan mesin Anda.

Sayangnya, perlindungan itu hanya berlaku untuk sistem itu sendiri. Seperti yang diilustrasikan xkcd, ada banyak hal yang Anda pedulikan yang tidak dilindungi oleh Perlindungan Integritas Sistem, hak akses root atau permintaan kata sandi:

XKCD 1200

Jadi, ada banyak hal yang bisa Anda ketik yang hanya akan menghancurkan akun pengguna Anda dan semua file Anda jika Anda tidak hati-hati. Beberapa contoh:

  • rm -rf ${TEMPDIR}/*. Ini tampaknya benar-benar masuk akal, sampai Anda menyadari bahwa variabel lingkungan dieja TMPDIR. TEMPDIRbiasanya tidak terdefinisi, yang membuat ini rm -rf /. Bahkan tanpa sudo, ini dengan senang hati akan menghapus segala sesuatu yang Anda miliki untuk menghapus izin, yang biasanya akan mencakup seluruh folder rumah Anda. Jika Anda membiarkan ini berjalan cukup lama, itu juga akan mengeluarkan semua drive yang terhubung ke mesin Anda, karena Anda biasanya memiliki izin menulis untuk itu.
  • find ~ -name "TEMP*" -o -print | xargs rm. findbiasanya akan menemukan file yang cocok dengan kriteria tertentu dan mencetaknya. Tanpa -oini, lakukan apa yang Anda harapkan dan hapus setiap file yang dimulai dengan TEMP*( selama Anda tidak memiliki spasi di path ). Tapi, -oberarti "atau" (bukan "output" seperti halnya untuk banyak perintah lain!), Menyebabkan perintah ini untuk benar-benar menghapus semua file Anda. Kekecewaan.
  • ln -sf link_name /some/important/file. Saya mendapatkan sintaks untuk perintah ini sesekali salah, dan itu akan dengan senang hati menimpa file penting Anda dengan tautan simbolis yang tidak berguna.
  • kill -9 -1 akan membunuh semua program Anda, mengeluarkan Anda lebih cepat dan mungkin menyebabkan kehilangan data.
nneonneo
sumber
3
FYI (untuk orang lain yang membaca ini) findmemiliki -deleteargumen yang jauh lebih aman daripada menyalurkan kexargs rm
Josh
Apakah MacOS modern benar-benar lebih tahan crash? Sebagian besar sistem ini adalah untuk satu pengguna. Apakah mereka benar-benar memiliki maxprocs / cpulimits waras? Bisakah Anda memberikan referensi?
user2497
1
Anda, dari semua orang, akan tahu dengan baik kerusakan yang ln -sfdapat dilakukan ... dan bagaimana memulihkannya :-)
Iwillnotexist Idonotexist
1
@Josh: terima kasih sudah menunjukkannya. Dan, dalam kasus umum, seseorang harus menggunakan find -print0 | xargs -0untuk menangani karakter aneh dengan aman dalam nama file.
nneonneo
1
Sepakat. Saran xargs yang lebih berguna: gunakan <whatever> | xargs echo <something>dulu, untuk melihat pratinjau apa perintah xargs sebenarnya akan berjalan. xargs adalah contoh hebat mengapa CLI begitu kuat: Anda dapat beroperasi pada banyak, banyak item sekaligus tanpa konfirmasi sial dan pegangan tangan ... pastikan Anda mengatakannya untuk melakukan apa yang Anda inginkan.
Josh
16

Satu lagi yang dapat Anda lakukan (yang saya lakukan tanpa sengaja sebelumnya) adalah:

sudo chmod 0 /

Ini akan membuat seluruh sistem file Anda (yang berarti semua perintah dan program) tidak dapat diakses ... kecuali oleh pengguna root. Ini berarti Anda harus masuk secara langsung sebagai pengguna root dan memulihkan sistem file, TETAPI Anda tidak dapat mengakses sudoperintah (atau perintah lainnya, dalam hal ini). Anda dapat memulihkan akses ke perintah dan file dengan mem-boot ke mode single-user, memasang dan memulihkan sistem file dengan chmod 755 /.

Jika ini dilakukan secara rekursif chmod -R 0 /maka ini akan membuat sistem tidak dapat digunakan. Perbaikan yang tepat pada saat itu adalah dengan menggunakan Disk Utility dari partisi pemulihan untuk memperbaiki izin disk . Anda mungkin lebih baik hanya mengembalikan snapshot atau cadangan sistem file Anda jika ini dijalankan secara rekursif.

musicman523
sumber
8
"Anda dapat memperbaikinya dengan ... chmod 755 /" - Tidak, Anda tidak bisa. Banyak file memerlukan izin berbeda dari 755, baik untuk keamanan, atau untuk bekerja sama sekali. chmod 755 /akan membuat sistem Anda tidak aman dan rusak dengan cara yang halus. Satu-satunya pemulihan penuh chmod 0 /adalah melalui pengembalian foto, pengembalian cadangan, dan / atau instal ulang.
marcelm
2
@marcelm Poin bagus. Saran saya hanya mengembalikan akses ke perintah, bukan sebagai perbaikan permanen. Saya telah memperbarui jawaban saya untuk mencerminkan hal itu. Sejauh yang saya tahu, chmod tidak bersifat rekursif kecuali Anda menggunakan -Rflag - jadi saya pikir izin subdirektori tidak akan terpengaruh?
musicman523
5
@marcelm Anda benar, tetapi perintah yang ditampilkan tidak rekursif sehingga hanya /terpengaruh.
Andrea Lazzarotto
Saya pernah sudo chmod -R 700 /punya komputer baru, memperkirakan itu akan jauh lebih aman jika saya melakukannya. Anehnya, itu boot, dan berakhir dengan menubar kosong dan desktop kosong. Tidak ada yang berhasil, tetapi Disk Utility Restore Izin partisi pemulihan benar-benar berhasil mengatur hampir semuanya dengan benar!
nneonneo
2
Utilitas Disk @marcelm memiliki opsi "Perbaiki Izin" yang harus memperbaikinya tanpa pemulihan sistem lengkap
Josh
10

Jawaban bahwa panggilan sudoharus dianggap tidak valid. Ini sudah mengasumsikan akses administratif ke sistem.

Coba perl -e 'exit if fork;for(;;){fork;}'. OSX mungkin memiliki beberapa perlindungan terhadap ini sekarang. Jika disajikan gelembung apel yang menanyakan apakah Anda ingin menghentikan aplikasi dan subproses Terminal, Anda (hampir) baik.

while true ; do cat /dev/zero > /dev/null & donejuga sangat berguna, khususnya. jika kamu tidak punya perl.

for i in 1 2 3 4 ; do cat /dev/zero > /dev/null & donehanya akan melakukan tes beban CPU kecil yang lucu. Sangat baik untuk memeriksa apakah heatsink dan kipas Anda sudah normal.

pengguna2497
sumber
Ini dikenal sebagai Fork Fork dan kemungkinan akan membuat sistem tidak dapat digunakan (dapat dianggap sebagai "crash") tetapi tidak akan menyebabkan kerusakan permanen. Tapi itu jahat!
Josh
@Josh "tetapi tidak akan menyebabkan kerusakan permanen" Kecuali untuk pekerjaan yang belum disimpan yang sedang terbuka.
reirab
@reirab Josh menambahkan tangkapan-semua 'kemungkinan' ke pernyataannya. Tetapi MacOS sebagian besar untuk mengedit foto dan video sekarang. Bukankah program Adobe memiliki penyimpanan otomatis otomatis?
user2497
1
Selain itu, pekerjaan yang tidak disimpan selalu berisiko sampai disimpan. Jika komputer Anda dianggap tidak dapat digunakan, maka Anda tidak dapat menyimpan apa pun yang Anda buka :)
Josh
@Jos MacOS sangat mudah untuk menyimpan barang. Selalu 🍎-S. Anda seharusnya tidak menulis 'kemungkinan' user
user2497
7

Tentu, pastikan Anda memiliki cadangan dan menyimpan file yang Anda pedulikan, lalu ketik halt

Dengan asumsi Anda gunakan sudountuk menjadi root, Mac akan macet.

Risiko terbesar dari baris perintah adalah kehilangan data. Antarmuka macOS dirancang selama beberapa dekade untuk tidak mengejutkan orang dan merusak data atau pengaturan atau aplikasi mereka. Antarmuka grafis macOS juga ada untuk menghapus kurva belajar (yang curam) agar aman dan menguasai skrip shell.

Anda kehilangan perlindungan itu karena itu saya memperingatkan orang-orang mulai dengan aplikasi terminal atau ssh. Jika Anda memiliki cadangan yang Anda tahu berfungsi dan memiliki waktu serta kepercayaan diri / keterampilan untuk melakukan pemulihan, maka Anda harus menyelam dan belajar dan bahkan memecahkan banyak hal.

bmike
sumber
3
Anda berkata, "... dan bahkan memecahkan barang-barang.", Yang merupakan kasus penggunaan yang baik bagi seseorang untuk melakukan hal-hal berisiko di mesin virtual. :)
user3439894
1
Bagaimana ini akan crash? Itu hanya mematikan sistem dengan segera. Ia bahkan mem-flush buffer kernel sehingga tidak ada data yang hilang. developer.apple.com/legacy/library/documentation/Darwin/…
Josh
7
sudo kill -9 -1  

Saya tidak sengaja melakukan kill -9 -1dalam skrip perl, berjalan sebagai root. Itu secepat, seperti menarik kabel listrik. Saat reboot, server melakukan pemeriksaan sistem file dan terus berjalan dengan benar.

Saya tidak pernah mencoba sudo kill -9 -1perintah itu di commandline. Ini mungkin tidak berfungsi, karena ID proses--1 "berarti" membunuh semua proses yang termasuk dalam grup proses pemanggil ".

Tidak yakin, jika dengan sudo, itu juga berarti init dan semua hal-hal kernel ... Tetapi jika Anda root, kill -9 -1pasti akan segera berhenti - sama seperti menarik kabel daya. By the way - tidak akan ada yang muncul di logfile, karena perintah itu adalah pembunuh tercepat di barat!

Sebenarnya, untuk pulih, saya pergi ke sysadmin kami dan memberi tahu mereka, apa yang saya lakukan. Mereka melakukan boot ulang keras, karena tidak ada cara untuk masuk pada server itu (RHEL6).

A kill -9 -1sebagai root membunuh setiap proses, yang berjalan sebagai root. Yaitu sshd. Itu membuat saya segera logout dan mencegah siapa pun masuk lagi. Setiap proses yang dimulai oleh init - termasuk init telah dimatikan, kecuali jika mereka mengubah UID atau GID. Bahkan masuk melalui konsol serial tidak mungkin lagi. ps -eaf | grep rootmenunjukkan beberapa proses mewah, yang, jika mereka bereaksi pada SIGKILL dengan cara default, akan cukup banyak bahkan menghentikan penulisan dasar ke HD.

Saya tidak akan mencoba ini sekarang di laptop saya :-) Saya tidak cukup penasaran untuk mencari tahu, jika kill -9 165([ext4-rsv-convert]) benar-benar akan berhenti menulis ke HD.

bubi6608
sumber
Anda tidak dapat "membunuh" kernel, dan ini seharusnya tidak menyebabkan check-in sistem file dengan sendirinya. Bagaimana Anda pulih dari situasi ini? Apakah Anda melakukan boot ulang keras? Karena mungkin itulah yang menyebabkan cek filesystem :)
Josh
Jawaban Anda yang diedit masuk akal. Anda tidak dapat benar-benar membunuh secara initnormal, tetapi Anda dapat membunuh semua sesi gettys dan SSH dan membuat mesin tidak dapat digunakan. Sebuah Sihir SysRq seharusnya diperbolehkan untuk reboot bersih, tapi itu sering lebih mudah untuk hanya kekuasaan-siklus dan bergantung pada jurnal FS :)
Josh
5

Ya, Anda dapat sepenuhnya menghancurkan sistem Anda. Secara tidak sengaja melakukan sesuatu dengan sudohak istimewa adalah salah satu contoh yang telah diposting, apakah itu melupakan beberapa karakter yang memerintahkan terminal untuk melakukan sesuatu yang sama sekali berbeda dari yang Anda maksudkan. rming /bukan /tmp/\*hanya perbedaan 5 karakter. Menempatkan ruang di tempat yang salah bisa melakukan sesuatu yang sangat berbeda juga. Di lain waktu, instruksi yang tampaknya baik bisa saja mengacaukan kode jahat ke dalamnya. Beberapa orang di internet sangat pandai mengaburkan kode.

Ada juga perintah yang, menggunakan html, dapat dibuat ukuran font nol, sehingga sesuatu yang benar-benar tidak berbahaya, ketika disalin ke clipboard, sebenarnya bisa menginstal git repo seseorang sebagai sumber tepercaya dan mengunduh malware.

Dan ada perintah yang dapat Anda jalankan yang membuka Anda untuk mengeksploitasi, atau yang bisa dimaksudkan dengan baik tetapi menghapus file atau program penting atau merusak disk Anda. Faktanya, menggunakan alat secara tidak benar dapat melakukan sesuatu yang mendasar seperti secara tidak sengaja menulis di sektor boot Anda, atau kepala disk Anda, atau banyak masalah lainnya.

Contoh sesuatu yang kurang destruktif yang belum diposting adalah membuka file biner di vi. Jika Anda pernah mencobanya, Anda akan tahu bahwa itu dapat mengacaukan terminal Anda sampai tidak dapat digunakan lagi reset.

Atau, ada perintah yang akan merobohkan mesin Anda, seperti:

yes >> /dev/null & yes >> /dev/null & yes >> /dev/null & yes >> /dev/null & 

Anda dapat mencobanya, itu tidak akan merusak, tetapi itu akan merusak prosesor Anda, dan Anda harus membunuh setiap proses yang Anda hasilkan.

Yang sedang berkata, dalam komputasi umumnya diambil bahwa Anda tidak dapat membuat telur dadar tanpa memecahkan beberapa telur. Anda harus berhati-hati di terminal, tetapi satu-satunya cara agar seseorang menjadi lebih baik dalam menggunakan OS adalah dengan belajar dan berlatih.

JFA
sumber
Contoh pertama Anda hampir tidak berbahaya. Vim sebenarnya cukup waras saat mengedit file biner. Dan dalam kasus terburuk Anda bisa menutup jendela. Contoh kedua dengan "ya" itu menjengkelkan dan akan menghabiskan cukup banyak CPU pengguna, tetapi sistem akan tetap responsif dan Anda dapat dengan mudah membunuh jendela terminal induk.
nneonneo
1
Saya tidak setuju dengan "mengacaukan terminal Anda ke titik bahwa itu tidak dapat digunakan sampai Anda me-restart" - coba reset, yang seharusnya membersihkan terminal yang memiliki keluaran biner dicetak untuk itu. atau, baru saja menelurkan TTY baru
Josh
1
Keren, nw @JFA. Sebenarnya butuh waktu bertahun-tahun untuk mempelajari resettriknya! Untuk info lebih lanjut: unix.stackexchange.com/questions/79684
Josh
1
Oh, terima kasih untuk itu, itu sangat membantu. Sudah bertahun-tahun bagi saya: P
JFA
1
@Josh Lalu 'stty sane ^ M' dan 'tput reset' juga akan menyenangkan bagi Anda.
user2497
4

Saya hanya seorang pemula bash, tetapi Anda dapat mengatur sementara Benar; lakukan PERINTAH; Selesai; Kebanyakan orang akan mencoba Ctrl + C yang akan menghentikan perintah, bukan proses eksternal (ctrl + Z, yang kemudian perlu dibunuh). Saya kira jika perintah adalah operasi berat seperti mengalikan jumlah besar dengan kekuatan mereka sendiri, itu bisa mengacaukan sumber daya Anda. Tapi memang, OS modern biasanya terlindungi dari kekacauan semacam itu.

Ando Jurai
sumber
2
Ini berjalan sangat cepat, tidak akan menabrak apa pun. Anda hanya perlu melakukan beberapa perhitungan intensif sehingga kernel maxprocs tidak membuat Anda sedih. cobawhile true do cat /dev/zero > /dev/null & done
user2497
Terima kasih. Saya berharap menangani sejumlah besar untuk membuat komputer berjalan lambat, kadang-kadang terjadi dengan program java / python yang sangat sederhana yang saya gunakan untuk pembelajaran mesin.
Ando Jurai
1
Cat zero to null bit adalah operasi angka besar, setidaknya dalam I / O. Saya menggunakan salah satu dari ini per inti CPU untuk melakukan tes termal.
user2497
1
Dan ^C akan membunuh loop sementara juga, tetapi hanya mengulangi terlalu cepat untuk interupsi untuk ditangkap. Menahan ^Cbisa keluar dari loop. Menutup terminal juga akan :)
Josh
2
@Josh Lebih mudah untuk menangkap INT jika ada jeda kecil, seperti tidur 0,1, setelah tugas intensif cpu.
user2497
3

Tentunya Anda masih dapat menyebabkan sistem crash menggunakan perintah yang dimasukkan dengan Terminal.

Bertahun-tahun semakin sulit, mungkin karena segala macam batasan dan tindakan perlindungan yang diterapkan, tetapi seperti yang dinyatakan oleh hukum seperti Murphy: "Tidak ada yang mudah bagi orang bodoh yang cukup cakap."

"Fork bombs" dan semua hal rm -rfskrip kiddies adalah hal-hal kuno yang diketahui untuk UNIX. Dengan Mac OS X Anda dapat bersenang-senang menggunakan bagian-bagian sistem GUI ( WindowServeruntuk menyebutkan) atau sesuatu seperti firewall OpenBSD alias PFyang dibawa oleh insinyur Apple tetapi tidak pernah berhasil memperbarui sejak keadaan tahun 2008. PFbekerja di kernel sehingga ketika menangkap kekhasan saatnya Apple memberitahu Anda " Anda me-restart komputer karena panik" atau hal-hal seperti ini.

Bagian terburuk dari ini adalah Anda tidak pernah dapat mengetahui di mana-n-mengapa panik - karena Apple tidak memberikan jejak tumpukan yang berarti; Anda hanya dapat memiliki nomor hex alamat pengirim bingkai tumpukan.

poige
sumber
Jawaban bagus, dan poin bagus. Saya ingin menambahkan daftar cara-cara baik untuk membuat OS X panik di lantai dansa favorit pribadi saya, namun tanpa syarat eksplisit untuk menghindari kebodohan naskah kiddie. Saya membongkar ekstensi kernel yang relevan dengan NFC. Bekerja setiap saat, secara instan. Seseorang dapat dengan mudah mempersenjatai ini ke dalam DOS dengan menjadwalkan ini pada jumlah yang dapat dibagi seperti 5 menit. Maka itu akan boot kemudian angsa menyelam. Ini mengharuskan instal ulang OS yang diberikan sebagian besar admin dan bahkan teknisi akan melewatkan ini ....
Francis dari ResponseBase
3

Agak ambigu apa yang Anda maksud dengan "crash" komputer Anda ... dan tidak ada jawaban pasti yang pasti untuk itu, meskipun ada beberapa contoh berguna dalam jawaban lain. Karena pertanyaan Anda lebih ambigu dan umum, saya ingin fokus pada sifat pertanyaan dan memberikan jawaban yang lebih umum.

Orang-orang yang tidak mengerti Terminal sering takut menggunakannya karena takut mereka akan mengacaukan perintah mereka dan merusak komputer mereka

Saya pikir baris perintah adalah pedang bermata dua, dan sering kali sangat tajam. Kekuatan terbesarnya juga kelemahan terbesarnya bagi pengguna baru: program CLI melakukan apa yang Anda katakan, tanpa menanyakan apakah itu benar-benar yang Anda maksudkan. Mereka sering tidak meminta konfirmasi, mereka tidak memberikan bantuan tangan atau interaktif, dan pilihan mereka pendek, sering singkat, kadang-kadang membingungkan string berbasis teks. Catatan bahwa mereka yang umumnya sangat baik didokumentasikan, satu hanya harus membaca manual (yang hampir selalu man <command you are about to run>) dan mengambil waktu untuk memahami apa yang baris perintah mereka akan dijalankan akan melakukan.

Mode operasi ini sangat kuat - ini berarti bahwa pengguna CLI berpengalaman dapat membuat "pipa" perintah panjang yang melakukan tugas-tugas kompleks dengan perintah tunggal. Ini karena tugas tidak akan bertanya "Apakah Anda yakin?" setiap langkah, ia melakukan apa yang diperintahkan. Tetapi bagi pengguna yang tidak terbiasa dengan mode ini, dan terbiasa dengan GUI di mana bantuan online hanya dengan sekali klik , itu tidak dikenal dan menakutkan.

Tapi adakah sebenarnya perintah yang akan membuat crash komputer Anda?

Bisakah Anda "crash" komputer Anda menggunakan CLI? Mungkin. Anda tentu dapat menyebabkan kehilangan data jika Anda menggunakan perintah destruktif yang salah. EG, banyak jawaban di sini menyebutkan rm, perintah yang menghapus file. Jelas, Anda dapat menyebabkan kehilangan data dengan perintah itu , itu adalah perintah yang dirancang untuk dilakukan.

Seperti yang ditunjukkan oleh jawaban lain, Anda dapat menggunakan baris perintah untuk membuat mesin Anda hampir tidak dapat digunakan untuk jangka waktu tertentu: Anda dapat mematikan tanpa konfirmasi, menyebabkan proses menggunakan 100% dari sumber daya yang tersedia tanpa konfirmasi, mematikan semua program Anda atau hancurkan sistem file Anda. Jika Anda benar-benar ingin, Anda bisa menggunakan CLI untuk membuat ekstensi kernel yang menyebabkan kernel panik (yang paling dekat dengan "crash" yang bisa saya pikirkan).

Baris perintah (diakses melalui Terminal) adalah alat yang ampuh. Seringkali lebih cepat untuk menyelesaikan masalah menggunakan Terminal daripada GUI. Beberapa solusi hanya tersedia menggunakan perintah Terminal. Namun, kunci CLI adalah pemahaman . Jangan jalankan perintah acak yang Anda lihat online. Baca halaman manual dan pahami perintah apa yang dilakukan. Jika Anda tidak yakin, tanyakan kepada seseorang atau pelajari lebih lanjut tentang perintah sebelum menjalankannya.

Josh
sumber