命令参考手册:https://www.linuxcool.com/
echo
输出字符串或变量内容到终端上
echo hello world
echo $SHELL
date
显示或设置系统的日期时间
date
date "+%Y-%m-%d %H:%M:%S"
date -s "20240901 22:59:00" // 设置系统时间
date "+%j" // 查看今天是当年中的第几天
timedatectl
设置系统时间
timedatectl status // 查询时间,时区,时间服务器等状态
timedatectl set-timezone Asia/Shanghai // 设置时区
timedatectl set-time 2021-05-18 // 设置日期
timedatectl set-time 9:30 // 设置时间
rhel8的网络时间服务是chronyd,不是ntpd了,我们来启动一下
systemctl start chronyd
systemctl enable chronyd // 加入开机启动
启动后,再次使用 timedatectl status
查看,网络服务器已经是Active状态了。
reboot
重启系统
reboot
poweroff
关机
poweroff
wget
下载网络文件
wget https://www.linuxprobe.com/docs/LinuxProbe.pdf
wget -r -p https://www.linuxprobe.com // 递归下载这个网站的所有页面到www.linuxprobe.com目录下
ps
查看系统中的进程状态
Linux中进程有5种常见的状态:
- R 正在运行,或队列等待运行中。
- S 中断,进程休眠中
- D 不可中断
- Z 僵死,进程已终止,但是进程描述符还在,父进程调用wait4() 系统函数后,将此进程释放
- T 停止
进程还要一些状态的补充:
- < 高优先级
- N 低优先级
- L 被锁进内存
- s 包含子进程
- l 多线程
ps aux
pstree
以树状图的形式展示进程之间的关系。
如果执行报错,命令找不到,我们需要安装一下
dnf install psmisc // pstree 是 psmisc 包的一部分
pstree
top
动态的监视进程活动,以及系统负载。
top
下面是对top命令中的字段解释
系统时间 运行时间 登录终端数 系统负载: 1分钟 5分钟 15分钟 内的平均负载值,值越小,负载越低
top - 12:15:44 up 4:12, 2 users, load average: 0.00, 0.01, 0.00
进程总数 运行中的进程数 睡眠中的进程数 停止的进程数 僵死的进程数
Tasks: 190 total, 2 running, 188 sleeping, 0 stopped, 0 zombie
cpu资源使用情况 用户空间占用资源百分比 系统内核占用资源百分比 改变过优先级的进程资源百分比 空闲的资源百分比
%Cpu(s): 0.0 us, 0.0 sy, 0.0 ni, 100.0 id,
等待io操作完成而处于闲置状态的时间百分比 由于硬件中断而消耗的CPU时间百分比 由于软件中断而消耗的CPU时间百分比 表示虚拟化环境中,被其他虚拟机“盗取”的CPU时间百分比
0.0 wa, 0.0 hi, 0.0 si, 0.0 st
物理内存总理 内存空闲量 内存使用量 作为内核缓存的内存量
MiB Mem : 1966.1 total, 1343.5 free, 265.9 used, 356.8 buff/cache
硬盘可置换内存总量 硬盘可置换内存空闲量 使用量 已被提前加载的内存量
MiB Swap: 2048.0 total, 2048.0 free, 0.0 used. 1520.5 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
24738 root 20 0 64012 4724 3812 R 0.7 0.2 0:00.28 top
PID 进程号
USER 运行此进程的用户
PR:进程的优先级,数字越小表示优先级越高。
NI:用户级别的优先级(Nice),值越低,优先级越高。NI的范围通常是-20(最高优先级)到19(最低优先级)。
VIRT:进程所使用的虚拟内存总量,包括所有已分配的内存和交换空间
RES:进程当前使用的常驻内存(Resident Memory),这是物理内存中实际占用的部分。
SHR:进程共享的内存(Shared Memory),这是该进程与其他进程共享的内存量。
S:进程状态(State)
%CPU:该进程在过去的时间内所占用的CPU资源百分比。
%MEM:该进程所使用的物理内存占总可用内存的百分比。
TIME+:进程使用的CPU时间总量(包括用户态和内核态),通常以分钟和秒表示。
COMMAND:启动该进程的命令行,包括可执行文件的名称和其参数(如果有)。
nice
调整进程的优先级
PR,NI 都是表示进程的优先级,数值越小,优先级越高。
那么PR和NI的区别呢?
PR是由系统计算出来的一个实际调度的优先级,而NI是可以由用户设置的一个优先级(-20~19,数值越小,优先级越高)。通过修改NI值,可以间接影响PR值。
我们可以将系统不重要的进程优先级调低,让重要的进程占用更多的系统资源。
nice -n -20 bssh //将bash服务进程的优先级调整到最高
pidof
通过服务进程名称,来查询对应的pid
pidof sshd
kill
根据pid,终止某个进程
kill 2156
kill -9 2156 // 强杀
killall
批量结束某个服务进程带有的全部进程
pidof httpd
killall httpd
pidof httpd
ifconfig
查看网卡配置,网络状态信息
ifconfig
ens160: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.10.10 (ip地址) netmask 255.255.255.0 broadcast 192.168.10.255
inet6 fe80::c8f8:f5c5:8251:aeaa prefixlen 64 scopeid 0x20
ether 00:0c:29:7d:27:bf(mac地址) txqueuelen 1000 (Ethernet)
RX packets 304 bytes 33283 (32.5 KiB) 接收数据包个数 累计流量
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 91 bytes 11052 (10.7 KiB) 发送数据包个数 累计流量
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
uname
查看系统内核版本,系统架构
uname -a
查看系统发行版本
cat /etc/redhat-release
uptime
查看系统负载
uptime
free
查看内存使用量
free -h
who
显示登录主机的用户名,以及使用的终端,如果有远程用户,还是显示对方的ip地址。
who
root tty1 2024-09-02 06:48
root pts/1 2024-09-02 14:23 (192.168.0.102)
last
查看主机每次的登录信息
last
ping
测试主机之间的网络连通性
可用于判断远端主机是否在线,并且网络是否正常。
ping -c 4 192.168.10.20 // 发送4个ping包
tracepath
显示数据到达目的主机,经过的所有路由信息。
ping不通时,我们可以追踪数据包经过的路由,分析哪台设备出问题了。
tracepath www.linuxprobe.com
netstat
显示网络连接,路由表,接口状态等
netstat -a
netstat -i // 网卡列表
history
显示执行过的命令历史
history
history -c // 清空
sosreport
如果系统出现故障,可用这个命令,收集系统的运行状态,服务配置等信息。
pwd
显示用户当前所处的工作目录
pwd
cd
切换工作目录
cd - // 返回上一次所处的目录
cd .. // 进入上级目录
cd ~ // 切换到当前用户的家目录
cd ~username // 切换到指定用户的家目录
cd /ect
ls
显示目录中的文件信息
ls -al
ls -ld /etc // 查看目录的属性信息
tree
以树状图的形式列出目录结构
[root@rhel8-mytest ~]# tree ~
/root
└── anaconda-ks.cfg
0 directories, 1 file
find
查找文件
find /etc -name "host*" -print // 查找 /etc 下,所有以host开头的文件
find / -perm -4000 -print
// 在整个文件系统中找出所有归属于linuxprobe用户的文件并复制到/root/findresults目录中
find / -user linuxprobe -exec cp -a {} /root/findresults/ \; // -exec {} \; 的使用
locate
也是搜索文件的,这个比find查找快,但是它是基于缓存的,所以可能不实时。
updatedb // 生成缓存 /var/lib/mlocate/mlocate.db
locate whereis
whereis
专门查找二进制程序文件,源码包,帮助文件。
whereis ls
whereis pwd
which
专门查找二进制程序文件位置
which locate
which whereis
cat
查看文件内容
cat -n anaconda-ks.cfg // -n 显示行号
more
查看文件内容
more file // 空格键或回车键翻页
head
查看文件的前n行
head -n 10 file // 查看文件的前10行内容
tail
查看文件的后n行,也可以作为监控文件最新内容。
tail -n 10 file
tail -f /var/log/messages // 实时监控文件最新内容
tr
字符替换
cat anaconda-ks.cfg | tr [a-z] [A-Z] // 将文件中的小写字母替换为大写字母
wc
用于统计文件的行数,字数,字节数。
wc -l /etc/passwd // -l 行数 -w单词数 -c字节数
stat
查看文件的详细属性
比如文件有3种时间状态
- access time,内容最后一次被访问的时间
- Modify Time,内容最后一次被修改的时间
- Change Time,文件属性最后一次被修改的时间
[root@rhel8-mytest ~]# stat anaconda-ks.cfg
File: anaconda-ks.cfg
Size: 1331 Blocks: 8 IO Block: 4096 regular file
Device: fd00h/64768d Inode: 34685756 Links: 1
Access: (0600/-rw-------) Uid: ( 0/ root) Gid: ( 0/ root)
Context: system_u:object_r:admin_home_t:s0
Access: 2024-09-02 16:40:56.311463698 +0800
Modify: 2024-09-02 03:31:12.816062551 +0800
Change: 2024-09-02 03:31:12.816062551 +0800
Birth: -
grep
按行搜索文件中匹配的内容
grep /sbin/nologin /etc/passwd // -n 显示行号,-v反选
cut
按列找数据
cut -d : -f 1 /etc/passwd // -d列分割符号 -f 第几列
cut -d : -f 1-2 /etc/passwd
diff
比较文件之间的差异
diff --brief diff_A.txt diff_B.txt // 判断文件是否不同
diff -c diff_A.txt diff_B.txt // 显示不同处
uniq
去除文件中连续的重复行
uniq file
sort
按行对文件内容进行排序
sort fruit.txt // 默认按字母排序
sort -u fruit.txt // 对排序后的内容去重复行
sort -n number.txt // 按数字排序
小练习:对 /etc/passwd 的第三个字段按数字小到大排序?
sort -t : -k 3 -n /etc/passwd
touch
创建一个空文件,或设置文件的 Atime(读取了文件),Mtime(修改了文件内容),Ctime(文件权限或属性更改了)
touch test.go // 创建了一个空的test.go文件
-a 修改读取时间
-m 修改更改时间
-d 同时修改读取时间和更改时间
stat anaconda-ks.cfg
echo "Visit the LinuxProbe.com to learn linux skills" >> anaconda-ks.cfg
stat anaconda-ks.cfg
touch -d "2020-05-04 15:44" anaconda-ks.cfg
stat anaconda-ks.cfg
mkdir
创建空目录
mkdir test
cd test
mkdir -p a/b/c/d/e // 递归的创建嵌套目录
tree ../test
cp
复制文件或目录
cp srcfile destDir // 将srcfile复制到destDir目录下,文件名称不变,如果有同名的文件,则提示是否覆盖
cp srcfile destDir/srcfile2 // 将srcfile复制到destDir目录下,并修改文件名,如果有同名的文件,则提示是否覆盖
cp -a srcDir destDir // 将srcDir目录复制到destDir目录下
cp -a srcDir destDir/srcDir2 // 将srcDir目录复制到destDir目录下,并重命名为 srcDir2
mv
剪切,或重命名文件
mv x.log linux.log // 将x.log剪切到当前目录下,其实就是重命名操作
rm
删除文件或目录
rm install.log // 删除文件,默认带有询问
rm -f install.log // 强制删除
rm -rf dirname // 直接删除一个目录
dd
按指定大小和个数的数据块来复制文件,或转换文件。
dd if=/dev/zero of=560_file count=1 bs=560M // 用dd命令从/dev/zero设备文件中取出一个大小为560MB的数据块,然后保存成名为560_file的文件
dd命令还可以把光驱设备中的光盘制作成iso格式的镜像文件
dd if=/dev/cdrom of=RHEL-server-8.0-x86_64-LinuxProbe.Com.iso
file
查看文件类型
在Linux中,一切皆文件,比如文件,目录,设备等,它们可能没有后缀,无法直观的判断是什么类型的文件,用file命令就可用查看文件的类型了。
file anaconda-ks.cfg
file /dev/sda
file /bin/which
tar
对文件打包压缩,或解压
-c 压缩
-x 解压
-z gzip格式
-j bzip2格式
-v 显示压缩,解压缩过程
-C 指定要解压到的目录
-f 要压缩,解压的对象
tar -czvf xx.tar.gz dir // 压缩
tar -xzvf xx.tar.gz // 解压
// 示例
tar -czvf etc.tar.gz /etc // 打包并压缩整个etc目录,其实目的就是备份etc
// 将打包后的压缩包文件指定解压到/root/etc目录中
mkdir /root/etc
tar xzvf etc.tar.gz -C /root/etc