Lihtne veaotsing käsureal
Alusta täpsest käsust ja veateatest, mitte juhuslikust parandusest. „Ei tööta“ võib tähendada vale failiteed, puuduvat programmi, õiguste probleemi või vale shelli.
Kontrolli ilma parandusi tegemata
Asenda tabelis näidisnimi oma käsu või failiga.
| Küsimus | Kontroll ja tähendus |
|---|---|
| Kus töötan? | pwd näitab praegust täisteed |
| Kas fail on siin? | ls -lah näitab ka peidetud nimesid, suurusi ja õigusi |
| Kas programm leitakse? | command -v python3 annab leitud nime või tee; tühi väljund tähendab, et käsku ei leitud |
| Kas nimi on alias? | type -a python3 näitab Bashi ja zsh leitud variante |
| Kas faili saan käivitada? | ls -l skript.sh näitab õigusi; head -n 1 skript.sh näitab võimalikku shebang-rida |
| Milline shell töötab? | ps -p $$ näitab praegust shelliprotsessi |
| Kas Bashi süntaks on korrektne? | bash -n skript.sh loeb skripti seda käivitamata |
bash -n ei tõenda skripti ohutust ega õiget tulemust. See leiab süntaksivigu; failiteed ja käskude tagajärjed tuleb ikka üle vaadata. Tavaline bash skript.sh seevastu käivitab faili päriselt.
Vali järgmine samm veateate järgi
| Veateade | Kontrolli enne muutmist |
|---|---|
command not found | kirjapilt, paigaldus ja PATH; vaata command -v nimi |
No such file or directory | asukoht, suhteline tee, suur- ja väiketähed ning jutumärgid tühikutega nime ümber |
Permission denied | faili ja vanemkataloogi õigused; näiteks ls -ld kataloog vaatab kataloogi ennast |
syntax error | kas käsu kuju ja kasutatav tõlgendaja sobivad kokku |
package not found | paketi nimi, valitud hoidlad ja paketinimekirja värskus |
database is locked | milline programm vea andis; põhjus võib olla teine paketihaldur või andmebaasi kirjutav protsess |
Lukufaili kustutamine ei lõpeta lukku hoidvat protsessi. Ära eemalda lukke ega lisa käsule sudo enne põhjuse leidmist.
Vale failitee
ls "Minu fail.txt" otsib üht tühikuga nime. Ilma jutumärkideta otsiks käsk kahte nime. Suhteline tee ../andmed/sisend.txt sõltub praegusest asukohast; täistee mitte.
Vale shell
echo "$SHELL" näitab tavaliselt kasutajale seadistatud sisselogimisshelli, mitte tingimata praegu töötavat shelli. Ka praegune shell ei määra üksi skripti tõlgendajat: bash skript.sh valib Bashi, sh skript.sh valib sh, otsekäivitus ./skript.sh kasutab shebang-rida.
Kontrolli skripti sisu enne käivitamist. Kui usaldusväärsel oma skriptil puudub täitmisõigus, selgitab selle lisamist õiguste peatükk.
Programm on paigaldatud, kuid ei leita
Vaata echo "$PATH" abil otsinguteid. Pythoni puhul võib vaja olla õige virtuaalkeskkonna aktiveerimist; mõne paigalduse järel uue shelli avamist. Kontrolli ka, kas paketinimi ja käivitatava programmi nimi üldse kattuvad.
Hea veakirjeldus
Abi küsides lisa eesmärk, täpne käsk, täielik veateade ning operatsioonisüsteem ja töökeskkond. Asukoha kirjeldamisel eemalda paroolid, võtmed, isikuandmed ja tundlikud teed; ka logi ei tasu enne ülevaatamist avalikult jagada.
Minitest
- Kontrolli, kust sinu shell leiab
python3. Kas paigaldatud variante on mitu? - Kasuta meelega olematut failinime ja selgita saadud veateadet.
- Miks
bash -n skript.shjabash skript.shei ole samaväärsed kontrollid? - Koosta lühike veakirjeldus nii, et teine inimene saaks sama olukorra turvaliselt taastada.
Peatüki täisspikker
Baas ja süsteemipilt
Eesmärk
kitsenda viga enne parandamist: täpne veateade, asukoht, olemasolu, käsu leitavus, õigused ja shelli/süntaksi kontroll
Kontrollrada
pwdkontrolli, kus oledls -lahvaata faile, õigusi ja peidetud kirjeidcommand -v rgkas käsk leitaksetype -a rgnäita kõik sama nimega vastedls -l skript.shvaata skripti õigusihead -n 1 skript.shvaata skripti shebang-ridabash -n skript.shkontrolli süntaksit ilma käivitamatagrep --helpkinnita käsu süntaks
Levinud veateated
command not foundkäsk puudub, nimi vale või pole PATH-isNo such file or directorytee, failinimi või asukoht on valePermission deniedõigus ei luba lugeda, kirjutada või käivitadasyntax errorvale shell või vale käsukujupackage not foundpaketinimi või nimekiri on valedatabase is lockedandmebaasi hoiab teine toiming; põhjus sõltub programmist