基本命令

查看文件

在这里插入图片描述

cat 文件名  // 一次显示整个文件,文件太大的时候别用这个


# 显示行号,也是一次显示整个文件
nl 文件名


# head和tail差不多,是从头看
head 
tail -n 100 文件名	//  查看该文件倒数100行,默认10行
tail -f  // 只读,查看文件的时候,有新的日志的话,会自动显示,crtl + c暂停


#  more命令从前向后读取文件,因此在启动时就加载整个文件。
#	空格下一屏,回车下一行,会显示百分比
more 参数 文件名

// 参数
-数字	指定每屏显示的行数;
-d	显示“[press space to continue,'q' to quit.]”和“[Press 'h' for instructions]”;
-c	不进行滚屏操作。每次刷新这个屏幕;
-s	将多个空行压缩成一行显示;
-u	禁止下划线;
+数字	从指定数字的行开始显示。
+/STRING 从匹配搜索字符串 STRING 的文件位置开始显示

// 操作命令
/字串:在当前文件中向下搜寻『字串』这个关键字;
:f :立刻显示出文件名以及目前显示的行数;
b 或 [ctrl]-b :代表往回翻页,不过这动作只对文件有用,对管线(管道)无用。






# less在查看之前不会加载整个文件
# 	上一页pgUp,下一页pgDn,空格下一屏,回车下一行
#	比more好的是,可以往前翻页
less 参数 文件名

// 参数,也可以当操作命令用
-g  只标志最后搜索的关键词
-i  忽略搜索时的大小写 
-m  显示类似more命令的百分比
-N 显示每行的行号
-l	搜索时忽略大小写的差异
/字符串:向下搜索“字符串”的功能
?字符串:向上搜索“字符串”的功能
n	重复前一个搜索(与 / 或 ? 有关)
N	反向重复前一个搜索(与 / 或 ? 有关)
g 跳到文件头    【常用】
G 跳到文件尾部  【常用】

面试问题 less命令你们是怎么用的

比较文件内容:当需要比较多个文件的内容时,可以使用less的文件切换功能。可以同时打开多个文件,并在它们之间进行切换,方便地比较不同文件中的内容。例如,使用less file1.txt file2.txt可以打开两个文件,然后使用:n和:p命令在两个文件之间切换,逐页比较它们的内容。

连续查看:如果有一系列相关的文件需要依次查看,可以使用less的连续查看模式。在查看完一个文件后,可以自动打开下一个文件继续查看,无需手动输入文件名。例如,使用less *.log可以打开当前目录下的所有以.log结尾的文件,并按照文件名的顺序依次进行查看。

vi

vim是vi的升级版

vi	// 编辑文件
a  // 编辑

dd // 删除当前行
n dd // 删除多行

u // 撤销

yy // 复制当前行
p // 粘贴

gg # 移动到第一行

n enter # n为数字,光标向下移动n行,
/word # 向下寻找名为 word 的字符串,n查找下一个,N查找上一个

:set nu # 显示行号

目录

ls -al   // 查看文件及文件夹详情(并不是查看的内容)
   -lh   // 查看文件大小,h,linux文件默认单位为字节,h可以转换成人性化的单位



grep "to" test.conf  --color  // 在test文件下,寻找to,并且高亮显示,找出所有的并全部输出



// 操作文件夹
find -name "*log*"	// 根据文件名在当前目录查找文件
find / -name "log"		// 根据文件名在根目录查找文件
		-type 				// 根据文件类型查找(f文件,d目录,l软链接文件)



touch 文件名.扩展名	# 创建文件
touch 文件名{1..30}.扩展名 # 创建文件名1 到 文件名30 共30个文件


mkdir	// 创建文件夹

mv test  test1	// 将文件夹或者文件改名
mv test /opt	// 将文件或文件夹剪切到opt目录下

cp -r mytest /opt  // 将文件或文件夹递归复制到opt目录下

rm -rf  文件名或文件夹名	# 删除(f,直接删,不询问)
? # 匹配一个字符

解压缩

// 启动命令
.sh文件  ./文件名.sh start

tar -zcvf 打包压缩后的文件名	要打包的文件	//打包并压缩
z	调用gzip压缩命令进行压缩
c	打包文件
v	显示运行过程
f	指定文件名
栗子:打包并压缩/test下的所有文件,压缩包名称为xxx.tar.gz
tar -zcvf xxx.tar.gz aaa.txt bbb.txt

tar -xvf test.tar.gz	// 解压tar包到当前目录


unzip solr.war -d solr	// 解压war包到solr目录下

文件属性

# 更改文件所属用户组
# -R 递归更改文件夹下所有文件
chgrp [-R] 用户组 文件名


# 更改文件所属用户,也可以更改文件所属用户组
chown [-R] 用户名 文件名
chown [-R] 用户名:用户组名 文件名


# linux访问权限有两种方法,数字(常用)和符号
#	linux文件的基本权限有9个,
#	分别是owner/group/others分别又有各自的read/write/execute权限
# chmod 更改文件的访问权限
#	r:4 w:2 x:1
chmod [-R] 777 文件/目录

系统命令

# 管道
# 前面一条命令的结果	作为后面一条命令的参数(条件)
ps -ef|grep java

cat /etc/redhat-release	查看centOS版本

ifconfig  // 查看ip等信息

pwd  // 显示当前目录

ps -ef  // 显示所有进程,进程是pid
# 如果进程命令太长的话显示不全,就用
ps axwwf

netstat -an  // 查看所有端口号

// -n --numeric的缩写,即通过数值展示ip地址
// -l --listening的缩写,只打印正在监听中的网络连接
// -p --program,打印相应端口号对应进程的进程号
netstat -nlp | grep 8080



su root // 切换到root用户

service network restart	// 重启网卡

man 命令		// 显示该命令的使用文档

service iptables stop	// 关闭防火墙
service iptables status		// 查看防火墙状态
chkconfig iptables off		// 禁止开机启动防火墙

查看文件夹目录下的文件数量

# 统计当前目录下文件的个数(不包括目录)
ls -l | grep "^-" | wc -l

# 统计当前目录下文件的个数(包括子目录)
ls -lR| grep "^-" | wc -l

# 查看某目录下文件夹(目录)的个数(包括子目录)
ls -lR | grep "^d" | wc -l

# 统计当前文件夹下叫某某的文件的数量
find . -name filename | wc -l

# 统计当前文件夹下指定类型的文件的数量
# 例如这里需要找 js 文件的数量
find -name "*.js" | wc -l

# 数量太多的统计方法
# 先生成一个零时文件 tmpfile,再统计行数
find . > tmpfile
wc -l tmpfile





# 长列表输出该目录下文件信息(注意这里的文件是指目录、链接、设备文件等),
# 每一行对应一个文件或目录,ls -lR 是列出所有文件,包括子目录。
ls -l


# 过滤ls的输出信息,只保留一般文件,只保留目录是 grep “^d”。
grep “^-”


# 统计输出信息的行数,统计结果就是输出信息的行数,一行信息对应一个文件,所以就是文件的个数。
wc -l

文件比较运算符

文件比较运算符
-e filename 如果 filename存在,则为真 [ -e /var/log/syslog ]
-d filename 如果 filename为目录,则为真 [ -d /tmp/mydir ]
-f filename 如果 filename为常规文件,则为真 [ -f /usr/bin/grep ]
-L filename 如果 filename为符号链接,则为真 [ -L /usr/bin/grep ]
-r filename 如果 filename可读,则为真 [ -r /var/log/syslog ]
-w filename 如果 filename可写,则为真 [ -w /var/mytmp.txt ]
-x filename 如果 filename可执行,则为真 [ -L /usr/bin/grep ]

磁盘管理

df	# 列出文件系统整体的磁盘使用量
-h	# 以mb显示
du	# 检查磁盘空间使用量
-a	# 查看所有文件(包括隐藏文件,也可以看到子文件夹)

# 挂载点 挂载目录 相当于windows的 c、d盘。。。
[root@localhost ~]# df -h
文件系统                 容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root   50G  1.1G   49G    3% /
devtmpfs                 3.8G     0  3.8G    0% /dev
tmpfs                    3.9G     0  3.9G    0% /dev/shm
tmpfs                    3.9G   12M  3.8G    1% /run
tmpfs                    3.9G     0  3.9G    0% /sys/fs/cgroup
/dev/sda1               1014M  146M  869M   15% /boot
/dev/mapper/centos-home   42G   33M   42G    1% /home
tmpfs                    781M     0  781M    0% /run/user/0

# 使用了多少存储空间
[root@localhost home]# du
12      ./awu
12      .



# 查看根目录下所有文件的存储空间
# /usr 系统初期最大的就是我们的用户目录,因为很多程序和文件都在这里
[root@localhost home]#  du -sm /*
0       /bin
113     /boot
0       /dev
31      /etc
1       /home
0       /lib
0       /lib64
0       /media
0       /mnt
0       /opt
du: 无法访问"/proc/42063/task/42063/fd/4": 没有那个文件或目录
du: 无法访问"/proc/42063/task/42063/fdinfo/4": 没有那个文件或目录
du: 无法访问"/proc/42063/fd/4": 没有那个文件或目录
du: 无法访问"/proc/42063/fdinfo/4": 没有那个文件或目录
0       /proc
1       /root
12      /run
0       /sbin
0       /srv
0       /sys
1       /tmp
873     /usr
91      /var


# 挂载,就相当于插了个U盘,但是不像windows那样可以自动识别,需要挂载到本地磁盘
# 将外部设备 awu 挂载到 mnt 目录下,来实现对外部设备的访问
mount /dev/awu /mnt/awu


umount [挂载位置] # 卸载
-f	# 强制

进程管理 ps

  1. 在linux中,每一个程序都是有自己的一个进程,每一个进程都有一个id号
  2. 每一个进程,都会有一个父进程
  3. 进程可以有两种存在方式:前台(不能关,关了就停止)!后台运行
ps # 查看当前系统中正在执行的各种进程的信息
-ef # 可以查看到父进程的信息
-a # 显示当前终端运行的所有进程信息
-u # 以用户的信息显示进程
-x # 显示后台运行进程的参数

# 对cpu、内存使用率进行一个排序展示
ps aux --sort -rss

性能分析工具 top free

top命令是Linux下常用的性能分析工具,能够时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器,下面详细介绍它的使用方法;

top是一个动态显示过程,即可通过用户按键来不断刷新当前状态。如果在前台执行该命令,它将独占前台,直到用户终止该程序为止。

top命令提供了实时的对系统处理器的状态监视;它将显示当前系统正在执行的进程的相关信息,包括进程ID、内存占用率、CPU占用率等;

-b:批处理

-c:显示完整的治命令

-I:忽略失效过程

-s:保密模式

-S:累积模式

-i<时间>:设置间隔时间

-u<用户名>:指定用户名

-p<进程号>:指定进程

-n<次数>:循环显示的次数





# 使用top命令后显示的其中一行
%Cpu(s):  0.2 us,  0.2 sy,  0.0 ni, 99.2 id,  0.0 wa,  0.0 hi,  0.4 si,  0.0 st

top命令可以看到总体的系统运行状态和cpu的使用率;
%us:表示用户空间程序的cpu使用率(没有通过nice调度);
%sy:表示系统空间的cpu使用率,主要是内核程序;
%ni:表示用户空间且通过nice调度过的程序的cpu使用率;
%id:空闲cpu;
%wa:cpu运行时在等待io的时间;
%hi:cpu处理硬中断的数量;
%si:cpu处理软中断的数量;
%st:被虚拟机偷走的cpu;


# 使用top命令会显示所有进程
PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                                                                                
2208 root      20   0  159192   5996   4320 S   1.3  0.1   0:17.65 sshd

PID:进程标示号
USER:进程所有者
PR:进程优先级
NI:进程优先级别数值
VIRT:进程占用的虚拟内存值
RES:进程占用的物理内存值
SHR :进程使用的共享内存值
S :进程的状态,其中S表示休眠,R表示正在运行,Z表示僵尸进程
%CPU :进程占用的CPU使用率
%MEM :进程占用的物理内存百分比
TIME+:进程启动后占用的总的CPU时间
Command:进程启动的启动命令名称
[root@awu ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:           7802         738        6753          12         310        6818
Swap:          5119           0        5119


total:总计物理内存的大小
used:已使用多大
free:可用有多少
Shared:多个进程共享的内存总额
Buffers/cached:磁盘缓存的大小

网络测试与连通命令

telnet ip + 端口号测试

# Escape character is ‘^]’这个意思是ctrl键+]这个键,
# ctrl +] 可以进入telnet交互命令行。
[work@c4-hadoop-build04 ~]$ telnet 10.132.7.51 6379
Trying 10.132.7.51...
Connected to 10.132.7.51.
Escape character is '^]'.
^]
telnet>

ping 与 traceroute

# 源地址	目的地址
ping -I 10.xxx.1.xxx 172.xxx.121.xxx

# 追踪路由
traceroute -d www.baidu.com -s 10.1.1.2

traceroute -d <目标地址> -s <源地址>

wget详解

导读: wget是Linux中的一个下载文件的工具,wget是在Linux下开发的开放源代码的软件,作者是Hrvoje Niksic,后来被移植到包括Windows在内的各个平台上。

它用在命令行下。对于Linux用户是必不可少的工具,尤其对于网络管理员,经常要下载一些软件或从远程服务器恢复备份到本地服务器。如果我们使用虚拟主机,处理这样的事务我们只能先从远程服务器下载到我们电脑磁盘,然后再用ftp工具上传到服务器。这样既浪费时间又浪费精力,那不没办法的事。而到了Linux VPS,它则可以直接下载到服务器而不用经过上传这一步。wget工具体积小但功能完善,它支持断点下载功能,同时支持FTP和HTTP下载方式,支持代理服务器和设置起来方便简单。

// 安装wget
yum install -y wget
// 查看帮助手册
wget --help

// 下载文件并指定名字
wget -O wordpress.tar.gz  http://cn.wordpress.org/wordpress-4.9.4-zh_CN.tar.gz

// 断点续传
// 对于我们下载大文件时突然由于网络等原因中断非常有帮助,我们可以继续接着下载而不是重新下载一个文件
wget -c https://cn.wordpress.org/wordpress-4.9.4-zh_CN.tar.gz

// 对于下载非常大的文件的时候,我们可以使用参数-b进行后台下载
wget -b https://cn.wordpress.org/wordpress-4.9.4-zh_CN.tar.gz
// 会输出:
// 继续在后台运行,pid 为 1463。
// 将把输出写入至 “wget-log”。
tail -f wget-log	// 察看下载进度

// 使用 wget -o 把下载信息存入日志文件 
// 你不希望下载信息直接显示在终端而是在一个日志文件,可以使用以下命令:
wget -o download.log URL

// 伪装代理名称下载 
// 有些网站能通过根据判断代理名称不是浏览器而拒绝你的下载请求。不过你可以通过–user-agent参数伪装。
–user-agent

// 使用 wget –spider 测试下载链接,并不会下载
// 当你打算进行定时下载,你应该在预定时间测试下载链接是否有效。我们可以增加–spider参数进行检查。
wget –spider
// 以下几种情况下使用spider参数:
1 定时下载之前进行检查
2 间隔检测网站是否可用
3 检查网站页面的死链接


// 使用 wget –tries 增加重试次数,默认20次
wget –tries=40 URL 

// wget -i 下载多个文件 
filelist.txt
url1 
url2 
url3 
url4

wget -i filelist.txt

// 镜像网站 
wget –mirror 

// 使用 wget –reject 过滤指定格式下载 
// 你想下载一个网站,但你不希望下载图片,你可以使用以下命令。
wget –reject=gif url 

// 模拟下载打印服务器响应
wget -S  www.baidu.com
// 输出
正在解析主机 www.baidu.com (www.baidu.com)... 36.152.44.96, 36.152.44.95
正在连接 www.baidu.com (www.baidu.com)|36.152.44.96|:80... 已连接。
已发出 HTTP 请求,正在等待回应... 
  HTTP/1.1 200 OK
  Content-Length: 2381
  Content-Type: text/html
  Server: bfe
  Date: Tue, 23 Feb 2021 08:30:28 GMT

curl详解

curl 是常用的命令行工具,用来请求 Web 服务器。它的名字就是客户端(client)的 URL 工具的意思。

它的功能非常强大,命令行参数多达几十种。如果熟练的话,完全可以取代 Postman 这一类的图形界面工具。

curl与wget的区别

curl和wget基础功能有诸多重叠,如下载等。

非要说区别的话,curl由于可自定义各种请求参数所以在模拟web请求方面更擅长;wget由于支持ftp和Recursive所以在下载文件方面更擅长。类比的话curl是浏览器,而wget是迅雷9。

curl命令

// 如果有多个请求头需要写多个 -H
curl -H "Content-Type: application/x-www-form-urlencoded" -X POST -d '{"UserID": "jl006", "vip":""}' "http://192.168.248.5:33200/EPG/jsp/authLoginHWCTC.jsp"


// 获取网站源码
curl www.sina.com

// 保存,相当于wget命令
curl -o [文件名] www.sina.com

// 有的网址是自动跳转的。使用`-L`参数,curl就会跳转到新的网址。
curl -L www.sina.com

// 显示头信息
curl -i www.sina.com

// `-v`参数可以显示一次http通信的整个过程,包括端口连接和http request头、response头信息。
curl -v www.sina.com

// 发送表单信息
curl example.com/form.cgi?data=xxx
curl -X POST --data "data=xxx" example.com/form.cgi

// 如果你的数据没有经过表单编码,还可以让curl为你编码,参数是`--data-urlencode`。
curl -X POST--data-urlencode "date=April 1" example.com/form.cgi



// -x
// 有些Web站点是有限制的,我们无法直接通过当前IP直接访问目标站点;
// 还有一些站点对访问请求是有一定限制,而我们在请求数据时候为了请求速度也需要突破IP限制。
// 通过使用代理服务,我们就可以突破上述限制。
curl -x proxyAddr:proxyPort url

权限

############### 用户
# /etc/passwd
# 用户名:口令(密码):用户标识号:组标识号:注释性描述:主目录:登录shell
awu:x:1000:1000::/home/awu:/bin/bash

useradd 用户名 # 添加用户
-m # 自动创建该用户的主目录(在home目录下创建)
-g # 指定用户组


userdel -r 用户名 # 删除用户,-r 删除主目录

usermod 用户名 # 修改用户
# 修改用户的主目录,修改完毕之后配置文件会生效
usermod -d /home/233 awu

passwd 用户名 # 修改非root用户的密码



###################### 用户组 /etc/group


groupadd awu # 添加awu用户组
groupdel awu # 删除用户组
groupmod -n 新用户组 旧用户组 # 修改用户组








# 授权 用户 文件
chown  epguser  /home/epguser

# 查看用户属于哪个权限组
groups 用户名

抓包

# -i 监听的网卡
# -w 输出文件
tcpdump -i br-9a216e1be1c5 -X -w data.cap

其他

/dev/null

/dev/null,空设备文件,就是把写入的东西全部扔掉。

# 下面两条命令在终端都不会有任何显示,因为被扔掉了
cat /dev/null
echo "Hello, it's me" > /dev/null

# jml不是linux命令,此时下面这条命令会在终端显示报错信息
# bash: jml: 未找到命令...
jml > /dev/null

# jml: command not found 并不属于标准输出,而是属于标准错误输出。
# 由于标准错误输出并没有被重定向到 /dev/null ,所以会正常打印出来。
# 要把标准错误输出重定向到 /dev/null ,也很简单,
# 使用标准错误输出(stderr)的文件描述符 2 来指代它,并对其重定向
jml 2> /dev/null


#可能有朋友会问:输出就输出咯,还要分标准输出(stdout)和 标准错误输出(stderr),有必要么?

# 答案是,很有必要。因为我们日常在执行Linux命令的过程中,经常会遇到输出内容特别多的情况。
#里面既有正常的输出内容,也有错误的输出内容。将重定向和 /dev/null 结合起来,就可以帮助我们起到过滤的作用。

# 如果你只关心正常输出,可以在命令后面这样重定向:
# 这样一来,你看到的所有输出,都是命令正常执行的输出,忽略所有错误输出。
2> /dev/null
# 同理,如果你只关心报错内容,可以在命令后面这样重定向
> /dev/null

# 清空文件内容
cat /dev/null > 文件名

scp

# 传输文件
# 可能会报错,大概意思是密钥啥啥不对
# /root/.ssh/known_hosts
# 修改任何不熟悉的文件之前,切记切记先备份
# 把上面的文件有关本机和目的服务器内容干掉,重新生成就可以了
# 实操是可以的,但是不是个这逻辑就不知道了
scp -C -P 目标机端口号 -o 'ProxyJump 跳板机用户名@跳板机IP -p 跳板机端口号' 待传输文件名 目标机用户名@目标机IP:目标机目录

scp -C -P 22 -o 'ProxyJump root@110.16.123.132 -p 22' mongo4.4.11.tar root@110.16.123.133:/home/epguser


ip

“ip route show” 是 Linux 中的命令,用于显示计算机上的路由表。路由表记录了计算机如何将数据包发送到网络中的其他计算机。

输出的每一行代表一条路由规则,其中包含以下信息:

目的地址: 表示数据包要到达的网络地址。
网关: 表示数据包要经过的下一个计算机的地址。
掩码: 表示目的地址的掩码,用于确定哪些数据包适用于该路由规则。
标志: 表示路由规则的一些特殊属性,例如 “U” 表示该规则是可用的,“H” 表示该规则是静态的,而不是动态生成的。
接口: 表示该规则使用的网络接口的名称。

部分知识引用自:
https://blog.csdn.net/qq_34457768/article/details/79387779
https://blog.csdn.net/xyw_blog/article/details/16861681
https://www.cnblogs.com/yangliguo/p/8463131.html
https://www.cnblogs.com/sx66/p/11887022.html
http://www.ruanyifeng.com/blog/2011/09/curl.html
https://blog.csdn.net/weixin_45926547/article/details/126141295
https://www.bilibili.com/video/BV187411y7hF?p=15&spm_id_from=pageDriver&vd_source=64c73c596c59837e620fed47fa27ada7
https://blog.csdn.net/weixin_42588555/article/details/129531364

再习惯等待,等不来依旧难过。

张嘉佳

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐