免费,开源,生态环境繁荣,常用发行版:Ubuntu,Centos。man,info查询命令
文件管理
ls 显示当前目录下的文件夹和文件,文件夹蓝色,可执行文件绿色,普通文件白色 ls conf/ 指定目录 ls -a 显示所有文件包括隐藏文件 ls -l 显示文件信息:权限、所有人、文件文件夹大小(字节, -lh显示单位)、文件最后修改时间 man ls
cd 目录间切换 cd - 回到上一次的目录,cd之前的目录 cd . 当前目录 cd 不加参数进入home目录
pwd 显示当前目录
目录 / 根目录 ~ home目录
cp 复制 cp 源文件 目的文件 cp -r 源文件夹 目标文件夹(递归复制)
mv 重命名、移动文件夹或文件 mv 源文件 目的文件
rm 删除文件 rm 待删除文件 rm -r 待删除文件夹 -f 避免删除不存在文件报错 -v 显示删除了哪些文件、文件夹
ln 链接:指向文件的标识 硬链接:指向同一个文件,删除一个链接,不会删除真正的文件,只能文件建立硬链接(cp) 软链接:记录文件路径 ln 源文件 目标文件(-s软链接) ln -f 源文件 目标文件,覆盖掉已经存在的目标文件
磁盘使用空间 du:统计文件所占大小,使用情况 df:剩余量 -sh 仅下一级占用情况
find 文件查找 find 路径 -name “*.sh” man find
whereis
which
权限管理
root用户: gid = 0; uid = 0;所有权限
r读权限4,w写权限(增删改查)2,x执行权限(进去目录 )1,-没有权限,d(目录)文件所有者-属于group的用户-所有用户
chown/chgrp/chmod:改变文件所有者,所属group,改权限:chmod 777 a.txt(-R文件夹递归)
su 切换的目标用户id,不加默认切换到root用户
sudo -u 目标用户 操作:以某个用户执行,默认不加为root
文本操作
cat 文件名:查看文件
head 文件名:查看文件钱10行 -n指定前几行
tail 后
tail -f 实时
more/less:less看文件第一屏,快捷键,关键字匹配,
grep 关键词 文件名(可以是正则表达式)
sort 排序文件,默认字符序排列,-r倒序,-k指定某列,-n按数字排序
uniq 去重,相同行输出一次,-c输出相同行出现次数
wc文件中行数-l,字节数-c,单词数
awk
sed
vim编辑器:/关键字:匹配,模式切换:命令模式,编辑模式;
打包、压缩
tar打包命令:集合不同文件(新版可以压缩)可保存文件信息
gzip压缩命令:单独文件压缩
tar -zcvf bakup.tgz 文件、文件夹
tar -xzf bakup.tgz
zip、unzip
zcat解压并查看
linux 网络与系统命令
curl
模拟http请求

-X method

-H header

-d post的data

-b 指定cookie

-c 输出响应的 set-cookie带文件

-i 和 -w 控制response在控制台显示

wget 下载文件: wget 地址

进程与系统
ps 显示进程和线程信息
free 查看内存使用情况,设置单位:-m/-k/-g,-h自动选定单位
top 动态交互式显示当前CPU,内存,进程: load average: 1.99, 1.71, 1.19:CPU在一定时间内,需要处理的任务数、线程数,分别是1min5min15min如果等待数超过核数,会缓慢
kill
发送指定信号指定进程:kill -9 pid 强制终止杀死进程;kill -l 查看信号,9:sigkill

Ctrl+c == kill -2

网络常用工具命令
ping 检测网络连接可达性:packet internet grouper网络发包工具,基于icmp协议,网络层协议,没有端口概念;-c n pingn次,-W n n秒超时,-q静默输出,只输出结果
host
dns解析

hostname 本地主机名:ThinkPad-E490-PF1PJKPE

ifconfig 各个虚拟网卡的IP地址

host ip 获取对应主机名

host 主机名 获取对应IP

nc 网络发包,发送tcp(-t)/udp(-u)数据包,-l监听服务某个端口
netstat
查看端口信息: -a获取所有socket端口信息, -n以IP 形式显示

协议,缓冲队列大小,本地IP、端口,远端IP、端口,连接状态

tcpdump 抓包工具
telnet 远程登录、tcp连接测试

远程命令
ssh
安全远程登录:secure shell客户端,

如跳板机登录

scp
远程拷贝

本机文件,远程文件互相拷贝

跳板机文件拷贝到本地:

scp 远程:文件路径 本地路径

shell脚本编程
Linux自带命令完成工作:

&#35!/bin/sh指定脚本解析器,分号、换行符分割

shell数组,只支持一维数组,大小不限,下标允许不连续
定义数组:arrayName=(val0 val1 val2)
读取数组:val1=${arrayName[1]}
获取数组中的所有元素:@、:echo ${arrayName[]}
shell脚本中数组脚标只能是数值,awk可以是字符串
获取数组长度:echo ${&#35arrayName[]},echo ${&#35arrayName[1]}(获取数组某个元素长度)
shell传递参数,
$n: 0为执行的文件名,1为执行脚本第一个参数,,,
$&#35传递到脚本的参数个数
$
所有参数一串字符串输出
$@每个参数分别加引号输出
shell运算符
算数运算符
关系运算符:只能对数字,-eq, -ne(不等于), -gt, -lt, -ge(大于或等于), -le
布尔运算符: -o(or ||), -a(and &&)
字符串运算符: -z, -n, str
文件测试运算符: -e是否存在,-d是目录, -w是否可写,,,,,,
shell流程控制
if: if then elif then else fi
for: for prop in 12345 do 操作 done
while
untill
case (esac)
break (continue)
shell函数
自定义函数
[function] funcName [()] {action;[ return int;]}执行结果$?接受,需要在别的函数占用$?前输出
xargs:避免参数列表过长,xargs多行合成一行,xargs -n2 两列一组输出,删除文件夹:
alias:设置命令别名:unalias取消别名
crontab:定时执行
rsync:文件同步,只传输变化数据
iostat:提供线上机器io状态数据(tps,吞吐量,设备使用率<80%,响应时间<5ms, idle空闲高不高)
vmstat:查看虚拟内存(vm)使用状况:r 当前运行的队列数(是否超过CPU核数)bo长期不为零,需要加大内存,id(idle)常小于40,机器负载高
atnodes 在集群上运行指定命令,
tonodes 上传本地文件到集群,