一、问题的起因
下午在用ssh挂载U盘到Ubuntu系统后,准备备份git库时,发现了挂载的U盘目录下中文文件乱码的问题:
yuhuiliu@sinc-server:~$ sudo mount dev/sdd4 vslyu-flash/
yuhuiliu@sinc-server:~$ ls /media/vslyu-flash/ ?? ?? ??? ???? ?????? ??????-??? ??????????&?? 2017.fall.???&????? 2018?SINCLab???????? ! 360U???????? Android+App+????+???+-+????.rar ??????????????????.doc FBMC_F402_v1 FBMC_LYH FBMC_LYH -??????? FBMC_LYH -?????FIFO?????? FBMC-OFDM??????.docx FBMC-OFDM??????.xlsx fbmc_receive FBMC_SISO_demo FBMC_SISO_demo.rar fbmc_transmit ?????gnuradio L003UsingService LOST.DIR ???????_??_M201671934.doc OFDM_SISO OFDM_SISO???? ??????--??_???.pdf ??????????????????.pdf ???.png ServiceGoogleExample SINCLab-2018????????????????+??(2018.03.09).pdf System Volume Information vslyu-SINC-Document weekly-report yuhuiliu@sinc-server:~$ #export LC_ALL=zh_CN.GBK yuhuiliu@sinc-server:~$ #export.GBK yuhuiliu@sinc-server:~$ ls /media/vslyu-flash/ ?? ?? ??? ???? ?????? ??????-??? ??????????&?? 2017.fall.???&????? 2018?SINCLab???????? ! 360U???????? Android+App+????+???+-+????.rar ??????????????????.doc FBMC_F402_v1 FBMC_LYH FBMC_LYH -??????? FBMC_LYH -?????FIFO?????? FBMC-OFDM??????.docx FBMC-OFDM??????.xlsx fbmc_receive FBMC_SISO_demo FBMC_SISO_demo.rar fbmc_transmit ?????gnuradio L003UsingService LOST.DIR ???????_??_M201671934.doc OFDM_SISO OFDM_SISO???? ??????--??_???.pdf ??????????????????.pdf ???.png ServiceGoogleExample SINCLab-2018????????????????+??(2018.03.09).pdf System Volume Information vslyu-SINC-Document weekly-report
如上所示:中文的字符一律变成了“?”号;但是同时查看其它的非挂载U盘的文件目录,发现中文字符却能够显示:
yuhuiliu@sinc-server:~$ ls /home/sinc-admin/ 55 frameErrorRate_2.mat Music Untitled0.ipynb cc1 frameErrorRate_test_2.mat myipnbcert.pem Videos cwj gcc NewFolder WT CXW INSTALL Pictures 未命名文件夹 Desktop matlab_crash_dump.15695-1 Public Documents matlab_crash_dump.5278-1 Templates Downloads matlab_crash_dump.5597-1 test.sh
以上的验证说明:并不是ubuntu系统或者ssh终端不支持中文字符的显示,而很有可能是U盘本身的问题。
二、问题的解决
经过网上的查找,发现是U盘文件格式的问题,参考博客https://www.cnblogs.com/zhouqinxiong/p/3497293.html解决如下:
1、卸载硬盘
yuhuiliu@sinc-server:~$ sudo umount /dev/sdd4 umount: /media/vslyu-flash: target is busy (In some cases useful info about processes that use the device is found by lsof(8) or fuser(1).)这时发现sdd4这块设备在被其它的程序使用,根据命令运行的提示,使用fuser命令查找出正在访问vslyu-flash文件夹的进程,进行查杀,参照https://blog.csdn.net/lengyue1084/article/details/51477872,解决如下:
yuhuiliu@sinc-server:~$ fuser -m /media/vslyu-flash/ /media/vslyu-flash: 77813c yuhuiliu@sinc-server:~$ ps aux|grep 1338 yuhuiliu 79649 0.0 0.0 15980 988 pts/37 S+ 17:03 0:00 grep --color=auto 1338 yuhuiliu@sinc-server:~$ fuser -m /media/vslyu-flash/ /media/vslyu-flash: 77813c yuhuiliu@sinc-server:~$ ps aux|grep 77813 yuhuiliu 77813 0.0 0.0 25432 4816 pts/24 Ss+ 16:33 0:00 bash yuhuiliu 79897 0.0 0.0 15980 988 pts/37 S+ 17:07 0:00 grep --color=auto 77813 yuhuiliu@sinc-server:~$ sudo kill -9 77813 yuhuiliu@sinc-server:~$ sudo umount /media/vslyu-flash yuhuiliu@sinc-server:~$
2、重新挂载
成功用umount命令卸载之后,指定U盘的文件系统为vfat,编码格式为utf8,使用mount命令重新挂载:
yuhuiliu@sinc-server:~$ sudo umount /media/vslyu-flash yuhuiliu@sinc-server:~$ mount /dev/sdd4 /media/vslyu-flash/ -t vfat -o iocharset=utf8 mount: only root can use "--options" option yuhuiliu@sinc-server:~$ sudo mount /dev/sdd4 /media/vslyu-flash/ -t vfat -o iocharset=utf8使用ls -l命令查看文件信息,此时中文字符能正常显示
yuhuiliu@sinc-server:~$ ls -l /media/vslyu-flash/ 总用量 121872 drwxr-xr-x 4 root root 8192 Oct 15 2017 2017.fall.奖学金&助学金申请