linux常用命令
基本命令
查看文件
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
- 在linux中,每一个程序都是有自己的一个进程,每一个进程都有一个id号
- 每一个进程,都会有一个父进程
- 进程可以有两种存在方式:前台(不能关,关了就停止)!后台运行
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
再习惯等待,等不来依旧难过。
张嘉佳
更多推荐
所有评论(0)