Linux是一个强大的操作系统,广泛应用于互联网工作环境,本文将介绍Linux执行命令的过程以及基本查询信息的相关命令,以便于更好的帮助新手了解与掌握(本文以CenOS 7.9版本示例)。
Linux命令执行过程
- 读取输入:用户输入命令行。
- 命令解析:Shell解析输入的命令,识别命令与参数。
- 查找命令:Shell在环境变量指定目录中查找可执行文件,如果找不到命令则会报错。
- 执行命令:Shell找到命令后,会启动一个新的进程来执行该命令。
- 返回结果:命令执行完毕,Shell返回结果。
除此之外,我们还需要了解命令分为内部命令和外部命令,在执行内部命令时,Shell不需要启动新的进程,而外部命令是独立的可执行文件。当系统性能出现问题时,我们可以根据命令的性质来排查解决问题,如果是外部命令执行障碍,则需要检查该命令的运行环境,如果是内部命令运行障碍,则需要检查Shell配置或者环境变量。
查看命令是内部命令还是外部命令。
[root@bj-test-01 ~]# type echo
echo is a shell builtin
内部命令则显示...is a shell builtin。
[root@bj-test-01 ~]# type cat
cat is /bin/cat
外部命令则显示出命令的所在的文件位置。
[root@bj-test-01 ~]# type -a echo
echo is a shell builtin
echo is /bin/echo
也有出现既显示内部命令又显示外部命令的,是因为不是所有的主机都使用标准的Shell,所以会有一个外部命令的文件作为备份,防止内部命令执行失败。
启动与禁用内部命令
enable #查看所有启用的内部命令
enable -n #查看所有禁用的内部命令
enable COMMAND #启用内部命令
enable -n COMMAND #禁用内部命令
外部命令路径
[root@bj-test-01 ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
搜索路径由环境变量定义,环境变量PATH由各路径组成,冒号分割。
如果你有一个可执行文件不在环境变量的路径中,可将目录添加至环境变量配置文件中,在用source运行配置文件,即可直接运行命令。
[root@bj-test-01 home]# vim dayunzi.sh
[root@bj-test-01 home]# chmod +x /home/dayunzi.sh
[root@bj-test-01 home]# dayunzi.sh
-bash: dayunzi.sh: 未找到命令
[root@bj-test-01 home]# export PATH=$PATH:/home
[root@bj-test-01 home]# source ~/.bashrc
[root@bj-test-01 home]# dayunzi.sh
good good study day day up
命令别名
查看所有别名
[root@bj-test-01 home]# alias
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
设置别名(临时生效,永久生效需要写入配置文件)
[root@bj-test-01 /]# alias cdh='cd /home'
[root@bj-test-01 /]# cdh
[root@bj-test-01 home]#
撤销别名
[root@bj-test-01 home]# unalias cdh
[root@bj-test-01 home]# cdh-bash: command not found: cdh
常见命令
命令格式
command [options] [arguments]
示例
[root@bj-test-01 home]# ls
dayunzi.sh zg
[root@bj-test-01 home]# ls -l
总用量 8
-rwxr-xr-x 1 root root 32 8月 1 11:52 dayunzi.sh
drwx------ 2 zg zg 4096 3月 26 17:48 zg
[root@bj-test-01 home]# ls dayunzi.sh
dayunzi.sh
[root@bj-test-01 home]# ls -l dayunzi.sh
-rwxr-xr-x 1 root root 32 8月 1 11:52 dayunzi.sh
查看硬件信息
查看cpu
[root@bj-test-01 home]# lscpu
Architecture: x86_64 #cpu架构
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 2 #cpu数量
On-line CPU(s) list: 0,1
Thread(s) per core: 2 #cpu每核线程数
Core(s) per socket: 1 #每个cpu插槽核心数
Socket(s): 1 #插槽数量
NUMA 节点: 1 #NUME节点
厂商 ID: GenuineIntel
CPU 系列: 6
型号: 106
Model name: Intel(R) Xeon(R) Platinum 8369B CPU @ 2.70GHz #cpu型号
步进: 6
CPU MHz: 2699.998 #CPU MHz
BogoMIPS: 5399.99
超管理器厂商: KVM
虚拟化类型: 完全
L1d cache: 48K #缓存大小
L1i cache: 32K
L2 cache: 1280K
L3 cache: 49152K
NUMA 节点0 CPU: 0,1Flags: fpu vme de pse tsc msr... #cpu功能标志
查看内存大小
[root@bj-test-01 home]# free
total used free shared buff/cache available
Mem: 3733360 511096 156916 812 3065348 2933380
Swap: 0 0 0
工作中需要关注
- 当前内存的使用情况(used和free )
- 有多少可用内存可用于启动新进程(available)
- 缓存和缓冲内存使用情况(buff/cache)
- 交换分区使用情况(swap)
查看硬盘和分区情况
[root@bj-test-01 home]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda 253:0 0 40G 0 disk
└─vda1 253:1 0 40G 0 part /
vdb 253:16 0 50G 0 disk /data
工作中需要关注
- 设备的分区和类型(name和type)
- 设备大小(size)
- 确认挂载位置(mountpoint)
- 读写权限,1表示只读,0表示不只读(RO)
- 移动性,1表示可移动,0表示不可移动 (RM)
查看系统版本信息
查看系统架构
[root@bj-test-01 home]# arch
x86_64
查看内核版本
[root@bj-test-01 home]# cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)