Każdy może dać mi znać możliwe kody powrotu dla polecenia rm -rf inne niż zero, tj. Możliwe kody powrotu dla przypadków awarii. Chcę poznać bardziej szczegółowy powód niepowodzenia polecenia, inaczej niż polecenie nie powiodło się (powrót inny niż 0).
9
man ls
z systemu Ubuntu, wyjaśnia on powód niezerowego statusu wyjściaOdpowiedzi:
Aby zobaczyć kod powrotu, możesz użyć
echo $?
w bash.Aby zobaczyć rzeczywiste znaczenie, niektóre platformy (takie jak Debian Linux) mają
perror
dostępne pliki binarne, których można użyć w następujący sposób:rm -rf
automatycznie pomija większość błędów. Najbardziej prawdopodobnym błędem, jaki zobaczysz, jest1
(Operacja niedozwolona), która wystąpi, jeśli nie masz uprawnień do usunięcia pliku.-f
celowo pomija większość błędówźródło
perror
. W moim systemie jest dostarczany z mysql.strace
cię, jeśli wywołanie systemowe nie powiedzie się, ale dopóki nie spojrzysz na źródło, nie wiesz, jak syscall odnosi się do statusu wyjścia z programu (na przykład, jeśli się uruchomisz-f
,ENOENT
zostanie pominięty). Dlatego nie ma to tutaj znaczeniazłapałem coreutils z git ...
patrząc na wyjście widzimy ...
Teraz patrząc na zmienną statusu ....
wygląda na to, że niewiele się tam dzieje ze statusem wyjścia.
Widzę EXIT_FAILURE i EXIT_SUCCESS i nic więcej.
więc w zasadzie 0 i 1 / -1
Aby zobaczyć określone wywołania systemowe exit () i sposób ich występowania w przepływie procesu, wypróbuj to
dość proste.
ref:
http://www.unix.com/man-page/Linux/EXIT_FAILURE/exit/
źródło
0 / >0
.I want to know more detailed reason for the failure of the command unlike just the command is failed(return other than 0)
więc głosy w dół są zrozumiałe.if (!(flags & FILEUTILS_FORCE)) {
dodaniaelse{printf("same error message as perror");}
i jestem pewien, że inne implementacje by być podobne, ale jeśli nie, wersję busyboksa można zbudować samodzielnie i dołączyć.