解决Linux下ls命令无法使用的办法linux无法ls

想起去年在公司的服务器上遇到过这个问题。
那时候突然发现,我在Linux服务器上输入ls命令,结果系统提示我:“-bash:ls:command not found”。
当时心里那个急啊,心想这服务器不就成摆设了么?然后我就开始排查,首先就是用那个which ls命令看看ls命令在哪。
结果发现,那个命令的路径根本不在PATH环境变量里面。
我那会儿还不知道PATH是个啥东西,后来一查才知道,原来这个PATH变量是决定系统从哪些目录搜索命令的地方。

我就记得那时候查出来PATH变量有问题后,我就在终端里输了一串命令,就是那个export PATH=$PATH:/bin:/usr/bin,把缺少的路径加上了。
然后又试了一次ls命令,结果就好了,系统显示出了目录下的所有文件和文件夹。

这块其实我之前没碰过,但后来发现解决这个问题的方法还挺简单,主要是得知道怎么去检查和修改环境变量。
这事儿虽然不大,但要是当时没人告诉我,我估计得在那儿瞎折腾半天呢。
现在想想,学点Linux的基本操作还是很有必要的。
对了,你们如果遇到类似的问题,可以试试这个方法哈。

linux中设置了环境变量结果ls,ps等命令不执行了

前两天帮朋友调整PATH变量,本想方便他访问MySQL,结果搞了个大乌龙。
PATH原本是这样的:/usr/local/mysql/bin:$home/mysql。
我一看,心想这路径有点不对劲,得改改。
结果一通操作,变成了这样:PATH=$PATH:$HOME/bin:/usr/local/mysql/bin:$home/mysql。
心想这下好了,PATH设置得明明白白,肯定没问题了。

等等,还有个事,我突然想到,以前也有朋友遇到过类似问题,我那时候怎么解决的来着?好像是在PATH里加了个冒号,然后一切就搞定了。
不过,这次改动后,他运行命令还是不行,这到底是怎么回事呢?是路径写错了吗?还是权限问题?还是说,我这次的改动方法根本就不对?

linux中ll不能用怎么办

说实话啊,你说的对。
ll这玩意儿吧,Linux系统里本来就没有。
就是个别名,是别人用alias命令把ls -l给封装了一下。
你要是突然发现输入ll提示"command not found",那肯定是因为这个别名没设好。

你说的这些步骤都挺对的。
首先得打开文件,比如用vim ~/.bashrc。
这个文件是干啥的?就是存你用Bash这个shell时的一些个性化设置。
你要是用的不是Bash,得改改文件名,比如用Zsh的话就打开~/.zshrc。

然后在文件末尾加一行:alias ll='ls -l'。
注意,等号两边不能有空格,这个很重要。
你要是想看隐藏文件啊,或者想用彩色显示,就把'ls -l'改成'ls -a'或者'ls -l --color=auto'。

改完保存,别退出。
直接在终端输入source ~/.bashrc,这样配置就立马生效了。
你马上再输入ll,应该就能看到效果了。

你要是嫌麻烦不想改文件,那也行。
直接敲ls -l就行。
或者,你要是本来就有alias ll='ls -l'这个设置,但临时想用原始的ls -l,可以在前面加个\,比如敲\ll。
这样就能绕过别名,直接用ls -l了。

补充一句啊,你要是想让所有用这个系统的都得用这个别名,那得改全局配置文件,比如/etc/bashrc或者/etc/profile.d/下的某个文件。
但这个得有管理员权限才行。
而且啊,你用Bash设置的别名,在Zsh下就不灵光了,反过来也一样。

linux ls卡住了

ls命令卡住啊?这事儿挺烦的。
具体原因得一个个看。

1 . 网络文件系统出问题 要是ls用的是NFS或者Samba这种网络挂载,比如挂了个thinclient_drives,结果服务器突然没反应或者网线拔了,那进程就卡在那儿等数据。
我用strace -cls的时候,发现它卡在新fstatat这个系统调用上。

咋解决?先跑个mount | grep thinclient_drives看看挂没挂好。
要是显示乱码或者没响应,就umount -f /path/to/mountpoint强行卸载。
再ping下服务器,看网络行不行。

2 . 磁盘挂载异常 比如挂载点/home/ftq/test坏了,ls就读不了目录。
我用strace -df -T定位到这个点。
卸载后就好了。

解决方法?strace -df -T找坏点,然后umount -f /path/to/mountpoint卸载。
实在不行重启下系统再挂。

3 . 文件太多了 目录里文件一多,尤其是还有几个超大文件,ls就得扫好久。
比如我有个目录几万个小文件,用ls -l的时候能卡一晚上。

咋办?试试ls -F加文件类型符号,或者ls -S按大小排。
别用ls -l或者ls -a,太耗时间。

4 . 文件系统慢 机械硬盘转得慢、文件系统坏了,或者别的程序在抢硬盘资源,ls就卡。
比如我那台老机器挂了ext4 盘,ls -l的时候硬盘指示灯就狂闪。

解决方法?dmesg | grep error看看硬盘有没有坏道。
试试临时挂个tmpfs,或者换个固态试试。

5 . 系统资源不够 CPU或者内存被别的程序占了,ls就跑不动。
我用top一看,有个Python脚本占了我8 0%内存。

咋搞?top或者htop看看谁在抢资源。
把那程序关了就行。
实在不行重启系统,不过得先存好数据。

6 . 其他程序锁了文件 比如数据库在备份数据,ls就等它完事儿。
我用lsof /path/to/directory看到了锁的进程。

解决方法?lsof找到那个进程,终止它。
或者等它自己完事儿。
看看/var/log/messages有没有锁冲突的记录。

排查建议?先strace -c -ls跟踪下ls具体卡在哪一步。
再mount、df -T看看挂载点。
要是只某个用户卡,看看他.bashrc或者.profile里有没有乱七八糟的脚本。