使用下面的方法可以分辨:
SATA:
ls -l /sys/class/block | grep ata
usb:
ls -l /sys/class/block | grep usb
M.2:
ls -l /sys/class/block | grep nvme
2018年7月23日 星期一
【Linux】mount fat32 格式,chown 回應 "operation not permitted"
事由:
今天我有一支USB隨身碟,他是Fat32格式的,我在Linux使用mount指令把它掛載起來
後來要透過Samba到遠端電腦來修改此USB碟的內容,出現權限不足的問題
因此我使用chown想把它的owner改為nobody,卻出現"operation not permitted"的錯誤訊息
原因&解決方法:
查了一下原因如下:
因為chown(或是chmod)是在Linux的檔案系統才能夠使用的,FAT32或NTFS是無法使用這個指令來操作,而解決方法只有在mount的時候,指定你要操作的人的uid與gid
例如我原本想要把owner改為 nobody:nobody
===> 首先,先去確認你的passwd當中,nobody的uid與gid
如上圖,uid與gid都為99
所以我只需要在掛載時,使用下面的指令即可:
mount -t vfat -o rw,uid=99,gid=99 /dev/sdc1 /mnt/USB1
今天我有一支USB隨身碟,他是Fat32格式的,我在Linux使用mount指令把它掛載起來
後來要透過Samba到遠端電腦來修改此USB碟的內容,出現權限不足的問題
因此我使用chown想把它的owner改為nobody,卻出現"operation not permitted"的錯誤訊息
原因&解決方法:
查了一下原因如下:
因為chown(或是chmod)是在Linux的檔案系統才能夠使用的,FAT32或NTFS是無法使用這個指令來操作,而解決方法只有在mount的時候,指定你要操作的人的uid與gid
例如我原本想要把owner改為 nobody:nobody
===> 首先,先去確認你的passwd當中,nobody的uid與gid
如上圖,uid與gid都為99
所以我只需要在掛載時,使用下面的指令即可:
mount -t vfat -o rw,uid=99,gid=99 /dev/sdc1 /mnt/USB1
2018年7月20日 星期五
除錯工具strace的用法
strace [parameter] [除錯的執行檔]
執行 strace 相關參數
-o (將 strace 程式的過程寫至指定的 file 中)
-s (最多一次 print xxx bytes 的訊息)
-p (strace 某 pid 程序的執行過程)
-f (strace 某子程序的執行過程)
例如: 我執行smbd遇到無法跑在背景,卻又沒有任何錯誤訊息
就可以使用strace來觀察錯誤的原因
===> ./strace -o aa.log -s 1024
/sbin/smbd -D
2018年7月3日 星期二
【shell script】[ :Unexpected operator in shell
今天把一支寫好的script放到Ubuntu跑,原本在板子上的Linux上跑是沒有問題的,但在Ubuntu上Run出現了錯誤訊息,簡單的程式如下所示:
############## test.sh ################
#!/bin/sh
NAME="danny"
NUM=56
if [ $NAME == "david" ]; then
echo "This is david"
else
echo "This is danny"
fi
if [ $NUM -gt 48 ]; then
echo "num great then 48"
fi
####################################
執行程式後的錯誤訊息:
./test.sh: 6: [: danny: unexpected operator
找了一下原因,原來是因為 sh的語法並沒有 "==" 這種語法,而是必須使用單一個"="
而"=="這語法,是bash在使用的
因此解決方法有兩個:
1. 把程式第一行的 #!/bin/sh 改成 #!/bin/bash
2. 把語法 "==" 改為 "="
############## test.sh ################
#!/bin/sh
NAME="danny"
NUM=56
if [ $NAME == "david" ]; then
echo "This is david"
else
echo "This is danny"
fi
if [ $NUM -gt 48 ]; then
echo "num great then 48"
fi
####################################
執行程式後的錯誤訊息:
./test.sh: 6: [: danny: unexpected operator
找了一下原因,原來是因為 sh的語法並沒有 "==" 這種語法,而是必須使用單一個"="
而"=="這語法,是bash在使用的
因此解決方法有兩個:
1. 把程式第一行的 #!/bin/sh 改成 #!/bin/bash
2. 把語法 "==" 改為 "="
訂閱:
文章 (Atom)