Linux学习9_sh命令使用问题解决

本文探讨了在Linux环境下执行Kafka命令时遇到的问题,并详细解释了如何通过正确的路径调用脚本来避免命令未找到的错误。同时介绍了Linux中/bin、/sbin、/usr/bin、/usr/sbin等目录的区别及其用途。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


输入命令时,遇到下面的问题:

[hadoop@Slave1 bin]$ cd /usr/local/kafka
[hadoop@Slave1 kafka]$ cd bin
[hadoop@Slave1 bin]$ kafka-topics.sh --list --zookeeper localhost:2181
bash: kafka-topics.sh: command not found
[hadoop@Slave1 bin]$ cd ..
[hadoop@Slave1 kafka]$ bin/kafka-topics.sh --list --zookeeper localhost:2181
kafkatopic
[hadoop@Slave1 kafka]$ cd bin
[hadoop@Slave1 bin]$ sh kafka-topics.sh --list --zookeeper localhost:2181
kafkatopic
[hadoop@Slave1 bin]$ 


即:

sh kafka-topics.sh

bin/kafka-topics.sh

可以成功

kafka-topics.sh

失败



对sh命令进行说明:

sh Shell (BASH)  

Shell脚本能帮助我们很方便的去管理服务器,因为我们可以指定一个任务计划定时去执行某一个shell脚本实现我们想要需求。

有一个问题需要约定一下,凡是自定义的脚本建议放到/usr/local/sbin/目录下,这样做的目的是,一来可以更好的管理文档;二来以后接管你的管理员都知道自定义脚本放在哪里,方便维护。

安装的软件也是这样,脚本也放在了各自目录下的bin或sbin目录下。


详细说明见:

http://blog.youkuaiyun.com/wang_zhenwei/article/details/47127025

 

附录1:

/bin,/sbin,/usr/bin,/usr/sbin区别
/  : this is root directory                root 用户根目录
/bin : commands in this dir are all system installed user commands    系统的一些指令
/sbin:  commands in this dir are all system installed super user commands  超级用户指令 系统管理命令,这里存放的是系统管理员使用的管理程序 
/usr/bin: user commands for applications  后期安装的一些软件的运行脚本
/usr/sbin: super user commands for applications  超级用户的一些管理程序
/usr/X11R6/bin : X application user commands
/usr/X11R6/sbin: X application super user commands


Linux 中的某些重要的目录:
•主目录:/root、/home/username
•用户可执行文件:/bin、/usr/bin、/usr/local/bin
•系统可执行文件:/sbin、/usr/sbin、/usr/local/sbin
•其他挂载点:/media、/mnt
•配置:/etc
•临时文件:/tmp
•内核和Bootloader:/boot
•服务器数据:/var、/srv
•系统信息:/proc、/sys
•共享库:/lib、/usr/lib、/usr/local/lib
 
每个用户都拥有一个主目录。所有用户的个人文件(配置、数据甚至应用程序)都放在其中。根的主目录为/root。大多数非根主目录包含在 /home 树中,通常以用户命名。重要的二进制位于 /bin(用户二进制)以及 /sbin(系统二进制)中。不重要的二进制(如图形环境或Office 工具)安装在 /usr/bin 和 /usr/sbin中。进行这种分隔是为了尽可能地缩小根分区。使用源代码编译的软件通常位于 /usr/local/bin 和 /usr/local/sbin中。


来自:

http://blog.sina.com.cn/s/blog_8184e03301012z2x.html

 


附录2:

 /bin是系统的一些指令。bin为binary的简写主要放置一些系统的必备执行档例如:cat、cp、chmod df、dmesg、gzip、kill、ls、mkdir、more、mount、rm、su、tar等。
    /sbin一般是指超级用户指令。主要放置一些系统管理的必备程式例如:cfdisk、dhcpcd、dump、e2fsck、fdisk、halt、ifconfig、ifup、 ifdown、init、insmod、lilo、lsmod、mke2fs、modprobe、quotacheck、reboot、rmmod、 runlevel、shutdown等。
    /usr/bin 是你在后期安装的一些软件的运行脚本。主要放置一些应用软体工具的必备执行档例如c++、g++、gcc、chdrv、diff、dig、du、eject、elm、free、gnome*、 gzip、htpasswd、kfm、ktop、last、less、locale、m4、make、man、mcopy、ncftp、 newaliases、nslookup passwd、quota、smb*、wget等。
    /usr/sbin   放置一些用户安装的系统管理的必备程式例如:dhcpd、httpd、imap、in.*d、inetd、lpd、named、netconfig、nmbd、samba、sendmail、squid、swap、tcpd、tcpdump等。
    如果新装的系统,运行一些很正常的诸如:shutdown,fdisk的命令时,悍然提示:bash:command not found。那么
    首先就要考虑root 的$PATH里是否已经包含了这些环境变量。
    可以查看PATH,如果是:PATH=$PATH:$HOME/bin则需要添加成如下:
    PATH=$PATH:$HOME/bin:/sbin:/usr/bin:/usr/sbin

来自:

http://blog.youkuaiyun.com/kkdelta/article/details/7708250

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值