2015-03-02

Ubuntu Linux 解決 cp 指令 cannot stat no such file or directory 問題

阿舍之前在用 cp 指令的時候,遇到出現「cp: cannot stat ‘xxxxxx’: No such file or directory」訊息的情形,通常來說,如果不是阿舍打錯字就是真的沒有這個檔案,所以,阿舍就不會太理會這個錯誤訊息哩 ! ... 可是,如果沒有打錯字,而且,檔案也真的存在,還是遇到這個錯誤訊息的時候,那要怎麼辦哩 ?



阿舍要把 /var/log/nginx 資料夾下的所有的 access 日誌檔複製到別的資料做處理,因此,阿舍就用下面這一行指令來複製檔案,結果,就出現 cannot stat 的問題,一開始,阿舍一度以為是 cp 指令不能用 access* 的方式複製檔案哩 !

$ sudo cp /var/log/nginx/access* ./
cp: cannot stat ‘/var/log/nginx/access*’: No such file or directory

但是,阿舍用同樣的方式,就是檔名加星號的方式來複製別的資料夾的指定檔名的檔案,都沒有這個問題,於是,阿舍就切到 /var/log/nginx 資料夾來看看,就發現這個資料夾的檔案的擁有者是 www-data 及 adm 群組,而且,只有擁有者有讀寫權限,群組只有讀的權限,其他人則是完全沒有權限哩 !

$ sudo ls -l /var/log/nginx
total 14768
-rw-r----- 1 www-data adm  5704708 Feb 28 05:51 access.log
-rw-r----- 1 www-data adm  3789101 Feb 22 06:35 access.log.1
-rw-r----- 1 www-data adm   506444 Feb 16 06:46 access.log.2.gz

阿舍查了一下 cp 指令會出現 cannot sate 的原因,一般來說,除了真的沒有檔案之外,最有可能的原因就是路徑和權限的問題,在某些情況下,在使用 cp 指令時,使用相對路徑或是 ~ 路徑來指定檔案會讓 shell 程式找不到檔案,因此,改用絕對路徑就可以解決。

正常情況,cp 指令應該是可以執行這幾種複製的 ...

另外一個權限問題就更容易明白了,因為權限的問題造成 shell 程式根本就 "看不到" 那個檔案,因此,就當然會出現 No such file or directory 哩 ! 而阿舍遇到的,就是這個情形,因此,阿舍就調一下使用者的權限,就解決這個問題了哩 !

所以,如果有幸在檔案都存在的情況下還遇到這個 cannot stat No such file or directory 訊息的話,就可以改用絕對路徑或檢查一下檔案的權限設定看看囉 ! ... 供參囉 ! ...


推薦閱讀


有疑問? 問題還是沒解決嗎? 歡迎下方留言提問和討論 😁

沒有留言 :

張貼留言

歡迎留言提問和討論 .... 😁