前言
我们通过服务程序来调动硬件
Shell :终端程序的统称(bash、sh、zsh等)
Linux的命令结构
命令包含:命令 、命令参数 、命令对象。它们之间以空格隔开
命令参数分为长格式和短格式
长格式:--单词
短格式:-字母
Tip:长格式与长格式不可合并,长格式与短格式不可合并,短格式与短格式可以合并,例 ps aux
常用的命令
1、系统命令:
#启动服务
systemctl start 服务
#停止服务
systemctl stop 服务
#查看服务状态
systemctl status 服务
#重启服务
systemctl restart 服务
#重载服务
system reload 服务
#开机自启动
systemctl enable 服务
#开机不自启动
systmctl disable 服务
2、常用的系统工作命令
1.echo命令
echo命令用于在终端设备上输出字符串或变量提取后的值,语法格式为“echo [字符串] [$变量]”。
这是Linux系统中最常用的几个命令之一,它的操作却非常简单,执行“echo字符串”或“echo 变 量 ” 就 行 , 其 中 变量”就行,其中 变量”就行,其中符号的意思是提取变量的实际值,以便后续的输出操作。
例如,把指定字符串“LinuxProbe.com”输出到终端屏幕的命令为:
[root@linuxprobe ~]# echo LinuxProbe.com
LinuxProbe.com
下面使用“$变量”的方式提取出变量SHELL的值,并将其输出到屏幕上:
[root@linuxprobe ~]# echo $SHELL
/bin/bash
2.date命令
date命令用于显示或设置系统的时间与日期,语法格式为“date [+指定的格式]”。
用户只需在强大的date命令后输入以“+”号开头的参数,即可按照指定格式来输出系统的时间或日期,这样在日常工作时便可以把备份数据的命令与指定格式输出的时间信息结合到一起。例如,把打包后的文件自动按照“年-月-日”的格式打包成“backup-2020-9-1.tar.gz”,用户只需要看一眼文件名称就能大致了解到每个文件的备份时间了。
参数 | 作用 |
---|---|
%S | 秒(00~59) |
%M | 分钟(00~59) |
%H | 小时(00~23) |
%I | 小时(00~12) |
%m | 月份(1~12) |
%p | 显示出AM或PM |
%a | 缩写的工作日名称(例如:Sun) |
%A | 完整的工作日名称(例如:Sunday) |
%b | 缩写的月份名称(例如:Jan) |
%B | 完整的月份名称(例如:January) |
%q | 季度(1~4) |
%y | 简写年份(例如:20) |
%Y | 完整年份(例如:2020) |
%d | 本月中的第几天 |
%j | 今年中的第几天 |
%n | 换行符(相当于按下回车键) |
%t | 跳格(相当于按下Tab键) |
按照默认格式查看当前系统时间的date命令如下所示: |
[root@linuxprobe ~]# date
Sat Sep 5 09:13:45 CST 2020
[root@linuxprobe ~]# date "+%Y-%m-%d %H:%M:%S"
2020-09-05 09:14:35
将系统的当前时间设置为2020年11月1日8点30分的date命令如下所示:
[root@linuxprobe ~]# date -s "20201101 8:30:00"
Sun Nov 1 08:30:00 CST 2020
3.timedatectl命令
timedatectl命令用于设置系统的时间,英文全称为“time date control”,语法格式为“timedatectl 【参数】”。
发现电脑时间跟实际时间不符?如果只差几分钟的话,我们可以直接调整。但是,如果差几个小时,那么除了调整当前的时间,还有必要检查一下时区了
参数 | 作用 |
---|---|
status | 显示状态信息 |
list-timezones | 列出已知时区 |
set-time | 设置系统时间 |
set-timezone | 设置生效时区 |
查看系统时间与时区的方法如下:
[root@linuxprobe ~]# timedatectl status
Local time: Sun 2020-09-06 19:51:22 CST
Universal time: Sun 2020-09-06 11:51:22 UTC
RTC time: Sun 2020-09-06 19:51:21
Time zone: Asia/Shanghai (CST, +0800)
System clock synchronized: no
NTP service: inactive
RTC in local TZ: no
如果您查到的时区不是上海(Asia/Shanghai),可以手动进行设置:
[root@linuxprobe ~]# timedatectl set-timezone Asia/Shanghai
如果时间还是不正确,可再手动修改系统日期:
[root@linuxprobe ~]# timedatectl set-time 2021-05-18
而如果想修改时间的话,也很简单:
[root@linuxprobe ~]# timedatectl set-time 9:30
[root@linuxprobe ~]# date
Tue May 18 09:30:01 CST 2021
4.reboot命令
reboot命令用于重启系统,输入该命令后按回车键执行即可。
由于重启计算机这种操作会涉及硬件资源的管理权限,因此最好是以root管理员的身份来重启,普通用户在执行该命令时可能会被拒绝。reboot的命令如下:
[root@linuxprobe ~]# reboot
5.poweroff命令
poweroff命令用于关闭系统,输入该命令后按回车键执行即可。
与上面相同,该命令也会涉及硬件资源的管理权限,因此最好还是以root管理员的身份来关闭电脑,其命令如下:
[root@linuxprobe ~]# poweroff
6.wget命令
wget命令用于在终端命令行中下载网络文件,英文全称为“web get”,语法格式为“wget 【参数】 网址”。
参数 | 作用 |
---|---|
-b | 后台下载模式 |
-P | 下载到指定目录 |
-t | 最大尝试次数 |
-c | 断点续传 |
-p | 下载页面内所有资源,包括图片、视频等 |
-r | 递归下载 |
7.ps命令
ps命令用于查看系统中的进程状态,英文全称为“processes”,语法格式为“ps 【参数】”
参数 | 作用 |
---|---|
-a | 显示所有进程(包括其他用户的进程) |
-u | 用户以及其他详细信息 |
-x | 显示没有控制终端的进程 |
Linux系统中时刻运行着许多进程,如果能够合理地管理它们,则可以优化系统的性能。在Linux系统中有5种常见的进程状态,分别为运行、中断、不可中断、僵死与停止,其各自含义如下所示。
除了上面5种常见的进程状态,还有可能是高优先级(<)、低优先级(N)、被锁进内存(L)、包含子进程(s)以及多线程(l)这5种补充形式。
8.pstree命令
pstree命令用于以树状图的形式展示进程之间的关系,英文全称为“process tree”,输入该命令后按回车键执行即可。
[root@linuxprobe ~]# pstree
systemd─┬─ModemManager───2*[{ModemManager}]
├─NetworkManager───2*[{NetworkManager}]
├─VGAuthService
├─accounts-daemon───2*[{accounts-daemon}]
├─atd
├─auditd─┬─sedispatch
│ └─2*[{auditd}]
├─avahi-daemon───avahi-daemon
├─boltd───2*[{boltd}]
├─colord───2*[{colord}]
├─crond
├─cupsd
├─dbus-daemon───{dbus-daemon}
├─dnsmasq───dnsmasq
├─firewalld───{firewalld}
├─fprintd───{fprintd}
├─fwupd───4*[{fwupd}]
………………省略部分输出信息………………
9.top命令
第1行:系统运行时间(8min);登录用户数(Redhat7、8;5、6之会话终端的数量);系统负载(3个值分别为1分钟、5分钟、15分钟内的平均值)
第2行:进程总数
第3行:CPU资源占用。us:正在使用的百分比;id:空闲的百分比
第4行:物理内存的使用情况
第5行:交换分区的使用情况
第6行:PID:进程的表示;USER:发起用户的名称;PR、NI:进程优先级。越小越优先
10.nice 命令
nice命令用于调整进程的优先级,语法格式为“nice优先级数字 服务名称”
[root@linuxprobe ~]# nice -n -20 bash
[root@linuxprobe ~]#
11.pidof 命令
查询服务进程的PID号码
[root@localhost ~]# pidof sshd
1076
12.kill 命令
[root@localhost ~]# kill 1076
13.killall 命令
终止某个服务的全部进程(一个服务有多个进程)
3、系统状态检测命令
1.ifconfig 命令
用于获取网卡配置与网络状态等信息
2.uname 命令
[root@localhost ~]# uname
Linux
[root@localhost ~]# uname -a
Linux localhost.localdomain 4.18.0-80.el8.x86_64 #1 SMP Wed Mar 13 12:02:46 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
操作系统、主机名称、内核版本、系统打包时间
3.uptime 命令
[root@localhost ~]# uptime
12:12:04 up 1:03, 1 user, load average: 0.04, 0.02, 0.00
top命令的简化版。watch -n 1 uptime :每一秒刷新一次
4.free 命令
查看内存信息;[-h] 易读模式
[root@localhost ~]# free
total used free shared buff/cache available
Mem: 3848804 1299864 1896184 17680 652756 2282020
Swap: 2097148 0 2097148
[root@localhost ~]# free -h
total used free shared buff/cache available
Mem: 3.7Gi 1.2Gi 1.8Gi 17Mi 637Mi 2.2Gi
Swap: 2.0Gi 0B 2.0Gi
5.who 命令
查看系统登路用户
[root@localhost ~]# who
root tty2 2022-04-11 11:10 (tty2)
6.last 命令
查看系统的登录记录
[root@localhost ~]# last
root tty2 tty2 Mon Apr 11 11:10 still logged in
reboot system boot 4.18.0-80.el8.x8 Mon Apr 11 11:09 still running
root tty2 tty2 Sun Apr 10 19:11 - crash (15:57)
reboot system boot 4.18.0-80.el8.x8 Sun Apr 10 18:46 still running
root tty2 tty2 Sun Apr 10 13:38 - crash (05:07)
reboot system boot 4.18.0-80.el8.x8 Sun Apr 10 13:35 still running
root tty2 tty2 Sat Apr 9 23:02 - down (00:09)
reboot system boot 4.18.0-80.el8.x8 Sat Apr 9 23:01 - 23:12 (00:10)
root tty2 tty2 Sat Apr 9 22:24 - crash (00:36)
reboot system boot 4.18.0-80.el8.x8 Sat Apr 9 22:24 - 23:12 (00:48)
root tty2 tty2 Sat Apr 9 22:21 - crash (00:02)
reboot system boot 4.18.0-80.el8.x8 Sat Apr 9 22:20 - 23:12 (00:51)
reboot system boot 4.18.0-80.el8.x8 Sat Apr 9 16:37 - 23:12 (06:35)
root tty2 tty2 Fri Apr 8 19:17 - crash (21:19)
reboot system boot 4.18.0-80.el8.x8 Fri Apr 8 19:15 - 23:12 (1+03:57)
root tty2 tty2 Fri Apr 8 08:07 - crash (11:07)
reboot system boot 4.18.0-80.el8.x8 Fri Apr 8 08:05 - 23:12 (1+15:07)
TIP:信息有滞后性,需要注销一次才可以同步出来
7.tracepath 命令
[root@localhost ~]# tracepath www.google.com
1?: [LOCALHOST] pmtu 1500
1: _gateway 3.807ms
1: _gateway 3.312ms
2: _gateway 4.399ms pmtu 1492
2: 100.91.0.1 6.745ms
3: **.**.**.** 14.490ms
4: **.**.**.** 217.177ms
5: no reply
相当于tracert
8.netstat 命令
netstat命令用于显示如网络连接、路由表、接口状态等的网络相关信息,英文全称为“network status”,语法格式为“netstat 【参数】”
9.history 命令
查看命令历史记录
[root@localhost ~]# history
1 ifconfig
2 uname -a
3 uptime
4 who
5 history
[root@localhost ~]# !2
uname -a
Linux localhost.localdomain 4.18.0-80.el8.x86_64 #1 SMP Wed Mar 13 12:02:46 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
通过"!数字"可以再次执行该命令;清空history:history -c
Tip: history的命令记录保存在用户HOME目录下的/.bash_history。注销用户或重启后才会同步文件
10.sosreport 命令
用于收集系统配置及架构信息并输出诊断文档
4、查找定位文件命令
1.pwd 命令
查看当前工作目录
[root@localhost ~]# pwd
/root
2.cd 命令
切换工作目录
[root@localhost ~]# cd /etc
[root@localhost etc]# cd /bin
[root@localhost bin]# cd -
/etc
[root@localhost etc]# cd -
/bin
cd ~ :返回用户家目录 ;cd … :返回上一级目录;cd - :返回上一次所处的目录
3.ls 命令
[root@localhost ~]# ls -al
total 64
dr-xr-x---. 15 root root 4096 Apr 11 11:10 .
dr-xr-xr-x. 17 root root 224 Apr 7 23:48 ..
-rw-------. 1 root root 1406 Apr 8 00:13 anaconda-ks.cfg
-rw-r--r--. 1 root root 314 Apr 10 20:52 a.txt
-rw-------. 1 root root 191 Apr 9 23:11 .bash_history
-rw-r--r--. 1 root root 18 Aug 13 2018 .bash_logout
-rw-r--r--. 1 root root 176 Aug 13 2018 .bash_profile
-rw-r--r--. 1 root root 176 Aug 13 2018 .bashrc
drwx------. 10 root root 230 Apr 8 08:07 .cache
[-a]:查看全部文件(隐藏文件);[-l]:查看文件属性、大小等详细信息;[-d]
4.tree 命令
查看目录内的文件按名称及结构
5.find 命令
按条件查找文件所对应的位置。” find 【查找范围】 寻找条件 “
参数 | 作用 |
---|---|
-name | 匹配名称 |
-perm | 匹配权限(mode为完全匹配,-mode为包含即可) |
-user | 匹配所有者 |
-group | 匹配所有组 |
-mtime -n +n | 匹配修改内容的时间(-n指n天以内,+n指n天以前) |
-atime -n +n | 匹配访问文件的时间(-n指n天以内,+n指n天以前) |
-ctime -n +n | 匹配修改文件权限的时间(-n指n天以内,+n指n天以前) |
-nouser | 匹配无所有者的文件 |
-nogroup | 匹配无所有组的文件 |
-newer f1 !f2 | 匹配比文件f1新但比f2旧的文件 |
-type b/d/c/p/l/f | 匹配文件类型(后面的字幕字母依次表示块设备、目录、字符设备、管道、链接文件、文本文件) |
-size | 匹配文件的大小(+50KB为查找超过50KB的文件,而-50KB为查找小于50KB的文件) |
-prune | 忽略某个目录 |
-exec …… {}; | 后面可跟用于进一步处理搜索结果的命令 |
[root@localhost ~]# find / -name fstab
/etc/fstab
6.locate 命令
按照名称快速搜索文件对应位置。“ locate 文件名称”
[root@localhost ~]# updatedb
[root@localhost ~]# locate fstab
/etc/fstab
/usr/lib/dracut/modules.d/95fstab-sys
/usr/lib/dracut/modules.d/95fstab-sys/module-setup.sh
Tip:搜索不精确
7.whereis 命令
搜索命令的位置及帮助文件。“ whereis 命令名称”
[root@localhost ~]# whereis echo
echo: /usr/bin/echo /usr/share/man/man1/echo.1.gz /usr/share/man/man1p/echo.1p.gz
8.which 命令
快速搜索命令的位置。“ which 命令名称”
[root@localhost ~]# which echo
/usr/bin/echo
5、文本文件编辑命令
1.cat 命令
查看文件
[root@localhost ~]# cat b.txt
welecom to linux
2.more 命令
查看文件(大文件)
3.head 命令
查看纯文本文件的前N行,语法格式为“head 【参数】 文件名称”
[root@localhost ~]# head -n 5 a.txt
Being yourself
your life is your life
don’t let it be trapped into darkness.
keep watching
4.tail 命令
tail命令用于查看纯文本文件的后N行或持续刷新文件的最新内容,语法格式为“tail 【参数】文件名称”
[root@localhost ~]# tail -n 3 a.txt
don't let it be changed into another.
keep going
there is kindness somewhere.
Tip:持续刷新文件信息, “ tail -f 文件名称”
5.tr 命令
用于替换文本内容中的字符,英文全称为“transform”,语法格式为“tr 【原始字符 】 【目标字符】”
[root@localhost ~]# cat b.txt
welecom to linux
[root@localhost ~]# cat b.txt | tr [a-z] [A-Z]
WELECOM TO LINUX
6.wc 命令
用于统计指定文本文件的行数、字数或字节数,英文全称为“word counts”,语法格式为“wc 【参数]】文件名称”
参数 | 作用 |
---|---|
-l | 只显示行数 |
-w | 只显示单词数 |
-c | 只显示字节数 |
[root@localhost ~]# wc -l a.txt
16 a.txt
[root@localhost ~]# wc -w a.txt
54 a.txt
[root@localhost ~]# wc -c a.txt
314 a.txt
7.stat 命令
用于查看文件的具体存储细节和时间等信息,英文全称为“status”,语法格式为“stat文件名称”
[root@localhost ~]# stat a.txt
File: a.txt
Size: 314 Blocks: 8 IO Block: 4096 regular file
Device: fd00h/64768d Inode: 35291957 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2022-04-10 20:53:05.063808358 +0800
Modify: 2022-04-10 20:52:58.272808542 +0800
Change: 2022-04-10 20:52:58.272808542 +0800
Birth: -
8.grep 命令
用于按行(搜索)提取文本内容,语法格式为“grep 【参数】 文件名称”
参数 | 作用 |
---|---|
-b | 将可执行文件(binary)当作文本文件(text)来搜索 |
-c | 仅显示找到的行数 |
-i | 忽略大小写 |
-n | 显示行号 |
-v | 反向选择——仅列出没有“关键词”的行 |
[root@localhost ~]# grep oo anaconda-ks.cfg
network --bootproto=dhcp --device=ens160 --onboot=off --ipv6=auto --no-activate
# Root password
rootpw --iscrypted $6$bCzTPG86mlqUwR5.$5sDt2Swt10aIYQzNpFqFxfLMUeTcB6JMs4gzIKAi9l/q66pq2UnjDRfO6Uv5tdSRpX4zUC.ZuduGOZhSP89Pe0
xconfig --startxonboot
# Run the Setup Agent on first boot
firstboot --enable
kexec-tools
pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty
9.cut 命令
用于按“列”提取文本内容,语法格式为“cut 【参数】 文件名称”
[root@localhost ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
....
[root@localhost ~]# cut -d : -f 1 /etc/passwd
root
bin
daemon
.....
[-d]:以什么为间隔符;[-f]:第几列信息
10.diff 命令
用于比较多个文件之间内容的差异,英文全称为“different”,语法格式为“diff 【参数】 文件名称A 文件名称B”
[root@localhost ~]# cat c1.txt
welecom to linux
redhat8
[root@localhost ~]# cat c2.txt
welecom to linux
[root@localhost ~]# diff c1.txt c2.txt
2d1
< redhat8
11.uniq 命令
用于去除文本中连续的重复行,英文全称为“unique”,语法格式为“uniq 【参数】 文件名称”
[root@localhost ~]# cat c1.txt
welecom to linux
welecom to linux
welecom to linux
redhat8
[root@localhost ~]# uniq c1.txt
welecom to linux
redhat8
Tip:uniq只能去除重复的相邻行(可以先排序再去重)
12.sort 命令
用于对文本内容进行再排序,语法格式为“sort 【参数】 文件名称”
参数 | 作用 |
---|---|
-f | 忽略大小写 |
-b | 忽略缩进与空格 |
-n | 以数值型排序 |
-r | 反向排序 |
-u | 去除重复行 |
-t | 指定间隔符 |
-k | 设置字段范围 |
[root@linuxprobe ~]# cat fruit.txt
banana
pear
apple
orange
raspaberry
[root@linuxprobe ~]# sort fruit.txt
apple
banana
orange
pear
raspaberry
6、文件目录管理命令
1.touch 命令
用于创建空白文件或设置文件的时间,语法格式为“touch 【参数】 文件名称”
参数 | 作用 |
---|---|
-a | 仅修改“读取时间”(atime) |
-m | 仅修改“修改时间”(mtime) |
-d | 同时修改atime与mtime |
[root@linuxprobe ~]# touch -d "2020-05-04 15:44" anaconda-ks.cfg
[root@linuxprobe ~]# ls -l anaconda-ks.cfg
-rw-------. 1 root root 1260 **May 4 15:44** anaconda-ks.cfg
2.mkdir 命令
用于创建空白的目录,英文全称为“make directory”,语法格式为“mkdir 【参数】 目录名称”
[root@linuxprobe linuxprobe]# mkdir -p a/b/c/d/e
[root@linuxprobe linuxprobe]# cd a
[root@linuxprobe a]# cd b
[root@linuxprobe b]#
[-p]:递归创建嵌套关系文件目录
3.cp 命令
用于复制文件或目录,语法格式为“cp 【参数】 源文件名称 目标文件名称”
参数 | 作用 |
---|---|
-p | 保留原始文件的属性 |
-d | 若对象为“链接文件”,则保留该“链接文件”的属性 |
-r | 递归持续复制(用于目录) |
-i | 若目标文件存在则询问是否覆盖 |
-a | 相当于-pdr(p、d、r为上述参数 |
4.mv 命令
用于剪切或重命名文件。语法格式为“mv 【参数】 源文件名称 目标文件名称”
5.rm 命令
rm命令用于删除文件或目录。语法格式为“rm 【参数】 文件 名称”
参数 | 作用 |
---|---|
-f | 强制执行 |
-i | 删除前询问 |
-r | 删除目录 |
-v | 显示过程 |
[root@localhost ~]# ls
anaconda-ks.cfg Desktop Pictures
a.txt Documents Public
b.txt Downloads Templates
c1.txt initial-setup-ks.cfg Videos
c2.txt Music
[root@localhost ~]# rm -f c2.txt
[root@localhost ~]# ls
anaconda-ks.cfg Desktop Music Videos
a.txt Documents Pictures
b.txt Downloads Public
c1.txt initial-setup-ks.cfg Templates
[root@localhost ~]# rm -v c1.txt
rm: remove regular file 'c1.txt'? yes
removed 'c1.txt'
6.dd 命令
用于按照指定大小和个数的数据块来复制文件或转换文件,语法格式为“dd if=参数值 of=参数值count=参数值 bs=参数值”
[root@linuxprobe ~]# dd if=/dev/zero of=560_file count=1 bs=560M
1+0 records in
1+0 records out
587202560 bytes (587 MB, 560 MiB) copied, 1.28667 s, 456 MB/s
if:输入的文件名称;of:输出的文件名称;bs:设置每个“块”的大小;count:设置要复制“块”的个数
7.file 命令
用于查看文件的类型,语法格式为“file文件名称”
[root@linuxprobe ~]# file anaconda-ks.cfg
anaconda-ks.cfg: ASCII text
[root@linuxprobe ~]# file /dev/sda
/dev/sda: block special
8.tar 命令
用于对文件进行打包压缩或解压,语法格式为“tar参数 文件名称”
参数 | 作用 |
---|---|
-c | 创建压缩文件 |
-x | 解开压缩文件 |
-t | 查看压缩包内有哪些文件 |
-z | 用bzip2压缩或解压 |
-j | 用Gzip压缩或解压 |
-v | 显示压缩或解压的过程 |
-f | 目标文件名 |
-C | 指定解压到的目录 |
[root@localhost ~]# tar -cjvf a.tar.gz a.txt
a.txt
[root@localhost ~]# ls
anaconda-ks.cfg Desktop Music Videos
a.tar.gz Documents Pictures
a.txt Downloads Public
b.txt initial-setup-ks.cfg Templates
Tip:-z参数指定使用gzip格式来压缩或解压文件,-j参数指定使用bzip2格式来压缩或解压文件