1、man 命令的帮助,例如,man ls
2、help
命令的帮助(bash的内置命令) rm --help
3、ls list ,查看目录列表 -l(long) -d(directory) -F 给不同文件类型结尾加不同的符号 -t 按修改时间 -r 反转排序 -h 人类可读 -i(inode) 文件的索引号 ls -lrt
4、mkdir make directory 作用是创建目录,例如 mkdir /data -p 表示递归创建目录 mkdir /data/aaa/bbb
5、cd change directory 作用是切换路径,例如 cd /
6、touch 摸一下就有了,作用是创建文件以及改变文件的时间戳, 例如 touch abc.txt
7、vi 编辑器,相当于记事本,有编辑功能,但较弱。
8、vim 复杂的编辑器,相当于,emditor,editplus等,编辑程序可以使用
9、echo 是一个输出打印内容,配合“>”把内容清空覆盖 配合“>>”为追加内容在最后 echo "hello world" >>oldboy.txt -n 不换行, -e 可以指定特殊的字符,如/t /n
10、cat 查看文件内容 -n 显示行号
特殊用法:增加内容
cat >> /data/oldboy.txt <<EOF
I am studying linux.
EOF
EOF要成对出现,EOF也可以替换成任何内容。
11、rm remove 删除文件或目录,-r 删除目录 -f 强制删除 ,例如 rm -f oldboy.txt 生产场景尽量不要使用rm ,如果非要用,一定要先cp等备份。rmdir删除空目录 替代方法: a. mv移动到一个临时目录,相当于回收站 b. find删除
find /root/data -type f -exec rm -f {} \;
find /root/data -type f | xargs rm -f
12、find
查找
-type 按文件类型查找 参数f表示文件、d表示目录 ,
-name 按名字查找,查找的内容最好用双引号括起来。 ! 表示取反 -a 同时成立 -o 或者
例如:删除某个整个文件夹里面的内容,除了指定的那个不删
find /root/ -type f -name "oldboy.txt" -exec rm {} \;
find /root/data/ -type f ! -name "oldboy.txt" | xargs rm -f
-maxdepth 1 表示显示目录的层次为1层 -mtime 按修改时间查找 -ctime -atime find对应的三个重要时间参数 +7 七天以前 7 第七天 -7 最近七天
find /var/ -type f -name "*.log" -size +1M -mtime +7
find /etc/ -maxdepth 1 -type d
13、xargs 从标准输入获取内容,然后创建和执行命令 -n 数字 分组
[root@www ~]# seq 10 |xargs -n 5
1 2 3 4 5
6 7 8 9 10
14、cp copy 复制命令ctrl+c ,例如 cp oldboy.txt /tmp/ -r :递归,用于复制目录 ;-p保持属性 -a :相当于 -pdr -i :需要确认 cp = cp -i(默认)
cp a.txt{,.bak} 这里是复制命令的简写
当默认会提示,怎么让他不提示:全路径/bin/cp或者\cp 不使用别名
15、mv move 移动目录或文件,例如:mv /data /root 也用来改名
16、pwd print work directory 查看当前用户所在的路径
16、head 头部,取文件的前N行,默认前10行,取前3行 -n 3,简写 -3
17、tail 尾部,取文件的最后N行,默认最后10行,取前3行就是 -n 3,简写-3 -f 跟踪一个文件尾部的时实变化
tail -f /var/log/messages
18、grep 过滤器,把想要的或者不想要的分离开。-v 表示排除 grep -v "hello" test.txt
-i 不区分大小写 -E 过滤多个字符串 -o 输出精确匹配的字符而不是默认的整行
egrep "oldboy|g" oldboy.txt 或 grep -E "oldboy|g" oldboy.txt
文本控制: -B (before) 除了匹配的那一行之外,并显示之前的num行 -A (after) 除了匹配的那一行之外,并显示之后的num行 -C (context) 除了匹配的那一行之外,并显示该行前后的各num行
例如: 需要取出第20-30行
grep 20 -A 10 a.txt
grep 25 -C 5 a.txt
grep 30 -B 10 a.txt
19、sed
过滤,stream editor 用于过滤内容
sed -n '/过滤的内容/处理的命令' 文件
-n 取消sed的默认输出 -i 改变文件内容 -e允许多项编辑 p print打印, d delete删除
例如
seq 1 100 >>a.txt;
sed -n'20:30p'a.txt 打印出20到30行的内容
sed -n '20,30'p a.txt
ls -l | sed -n '/^d/p'
替换 sed -i 's#oldboy#oldgirl#g' a.txt
s常说的是查找和替换,用一个字符串代替另一个字符串 g(global)与s联合使用时,表示对当前行全局匹配替换(与下一个g意义不同) -i修改文件内容 -r 后面的内容不用转义 #是分隔符号,可以用/、@等替换
sed的后向引用: sed -n 's#()()#\1\2#gp' file
当在前面匹配部分用小括号的时候,第一个括号内容,可以在后面部分用\1输出 第二个括号内容,可以在后面部分用\2输出
[root@www ~]# ifconfig eth0|sed -nr 's#^.*addr:(.*) Bcast.*$#\1#gp'
172.16.0.11
20、awk 一门语言,过滤、输出内容(取列) NR 行号
$1 第一列 $2 第二列 $NF-1 倒数第二列
awk -F "分隔符号" '{print $N}' /etc/password
awk 'NR>19&&NR<31' a.txt 取20-30行
awk 'NR==31' a.txt 取第31行
awk -F ":" 'NR>9 && NR<21 {print $3}' passwd| cat -n
awk -F ":" 'NR==1 {print $7":"$2":"$3":"$4":"$5":"$6":"$1}' passwd
awk -F ":" 'NR==1 {print $7,$2,$3,$4,$5,$6,$1}' passwd
ls -l | awk '{if($2>1) print $0}' 找目录文件
21、yum Linux里包安装器,yum帮助解决依赖问题。
yum install tree -y
下载tree包,然后调用rpm命令安装tree包,如果需要依赖包,帮你下载帮你提前安装好
22、rpm 参数 -i install -v view -h human -ivh(安装、显示输出、人类可读输出)例如:rpm -ivh 包名.rpm(提前下载好)
最大的问题,依赖问题不好解决: a----b----c----d
rpm -qa tree < 结果 tree-1.5.3-2.e16.x86-64
-q query -a all -f file -v 打印输出 -U升级 -l list -qf 查询一个命令属于哪个包 rpm -qf /usr/bin/htpasswd rpm -e httpd 卸载服务 --nodeps 忽略依赖 rpm -Uvh 升级 rpm -ql查看包里有哪些文件
[root@web01 ~]# rpm -ql tree
/usr/bin/tree
/usr/share/doc/tree-1.5.3
/usr/share/doc/tree-1.5.3/LICENSE
/usr/share/doc/tree-1.5.3/README
/usr/share/man/man1/tree.1.gz
23、tree
显示目录数结构 —L 层数 -d 显示目录 tree -Ld 1 /
24、alias
查看以及定义别名(外号,小号)
alias oldboy="echo I am studying linux."
alias rm="echo rm can not be used,pls use mv"
别名生效的位置:针对root用户:/root/.bashrc 所有用户生效: /etc/bashrc或/etc/profile里面定义 永久生效方式 : source /etc/profiles
别名的作用: a..给危险的命令加一些保护参数,防止认为误操作 b.把很多复杂的字符串或者命令变成一个简单的字符串或者命令
unalias 取消别名
seq sequence 序列 seq序列 -s 指定序列的分隔符 -w 在列前添加0 横着打印 seq -s " " 10
seq [] last seq [] first last seq [] first 公差 last
[root@www ~]# seq -w 10
01
02
……
09
10
history 打印用户操作的历史记录。 -c 清除所有历史记录 -d 清除指定行号历史记录history |cut -c 8-
whoami 查看当前用户
su 用户角色切换 su - 用户名 -参数切换用户环境变量,从普通用户到root,需要输入root密码,从root到普通用户无需密码
selinux 状态说明:
enforcing selinux正在运行 permissive selinux临时关闭 还是提示警告 disabled selinux彻底关闭
cat /etc/selinux/config 查看配置文件 getenforce 检查selinux状态 setenforce 设置selinux状态 1启用 0警告,不启用
iptables
查看防火墙:-L -n
/etc/init.d/iptables stop 关闭防火墙
cat /etc/redhat-release 查看Linux版本
uname
打印系统信息
-r 内核版本
-m 32 or 64 bit
-a 全部
-n 主机名
hostname 查看主机名:uname -n
run level 运行级别 7种 0-6,具体 cat /etc/inittab runlevel 查看当前系统运行级别
init
切换运行级别,后面接对应的级别的数字
(3多任务多用户最常用,0关机,6重启)
例如init 5 ==startx切换桌面环境,需要有桌面软件包
chkconfig 设置开机自启动服务
(新增加开机服务步骤,脚本先扔到init.d文件夹下面,然后在脚本里面添加“两句话”,然后通过chkconfig --add mysql增加新服务)
# chkconfig 2345 21 60
# describle: start mysqld and stop mysqld script
cp ./mysqld /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
chkconfig --add mysqld
chkconfig --list|grep mysqld
chkconfig mysqld on\off
nl 显示行号 nl oldboy.txt,空行不计数
[root@www ~]# nl /etc/init.d/boy
1 #chkconfig: 2345 33 67
2 #describle: use it to test.
3 echo "test chkconfig is ok."
diff 比较,接两个文件
vimdiff 高级比较,高亮显示不同的内容
chattr 更改文件属性(常用于系统安全优化,锁定重要系统文件)
which 查找命令所在路径,搜索范围来自全局环境变量PATH
source 让修改的配置文件无需重启即可生效,例如修改字符集后source /etc/sysconfig/i18n
date 显示时间,修改时间:date -s 20170606
ulimit -SHn -a(查看所有限制)
wget 下载 wget -O /etc/yum repos.d http://url 下载到指定路径改名 O表示修改下载文件的名字 --spider 爬虫,检查网站是否是好的,不会下载只是检查 --T 超时时间 --tries=2 指定重试的次数 --q --quiet 安静的下载,关闭输出
less(cat) 按屏(空格,page up /page down)或者行(回车)查看文件
more 按屏(空格)或者按行(回车)查看文件(不能向上翻)
tar 打包,tar zcvf 打包成的名字 /路径 需打包文件 (一筐苹果,框在前,苹果在后)
创建一个压缩包 tar zcvf /tmp/etc.tar.gz /etc/
z----压缩工具---gzip 最常用一种 压缩之后我们一般给 压缩包命名位 xxxx.tar.gz
c----创建-------create
v----显示压缩/解压过程
f----file------指定压缩包的名字
查看压缩包里面的内容 tar ztf /tmp/etc.tar.gz
t---list------列表 显示
解压----解压到当前目录 cd /tmp/ pwd /tmp tar zxvf /tmp/etc.tar.gz
x-----extract 解压
tar zcvf etc.tar.gz ./etc
tar zcvf old2.tar.gz --exclude=./aaa/oldgirl.txt ./aaa 打包文件中排除个别文件
打包组合zcvf,解包组合zxfv
bzip 打包组合jcvf,解包组合jxvf
z(gzip),c(create),v(verbose),f(file),x(extract),j(bzip)
--exclude 排除 -X指定文件排除 -C指定目录解压,-p保持属性
cut 按列切割 -d 指定分隔符,默认tab分隔符,不是空格,-f 数字选列 ,-c 按字符,-b按照字节输出
cat test.txt
"i am a oldboy my qq is 12345521"
cut -c 3-6 test.txt ==>am a
[root@www ~]# cat /etc/passwd|cut -d : -f 1
root
bin
daemon
adm
tac cat的内容倒着输出,前后内容行数反向读取。
rev 内容反向读取
split 按照指定的行数或者大小分隔文件。对一段文字做切割,如:切割小说 -l 指定行数 split -l 10 a.txt new_ ==>wc -l new_* -a 指定生成文件后缀长度,默认2 -d 使用数字后缀 split -l 10 -d a.txt oldboy_ -b 指定分隔大小
paste 合并文件,-d指定分隔符 paste -d : a.txt b.txt 就把两个文件内容左右合并一起了,添加用户时可能用到 -s 把列转成为行 cat用于上下合并,paste用于左右合并
sort 以行为单位进行排序,默认按照第一列ascli码排序,升序,从小到大 -r 倒序,从大到小 -n 按照数值排序 -u unique 去除重复行 -t 指定分隔符 -k 指定区域 sort -k2 oldboy.txt 第二列排序 sort -ru oldboy.txt
uniq 压缩相同的行,还是和上面的参数有所区别 -c 统计行号,出现的次数 sort -r oldboy.txt | uniq -c
wc 统计文件的行数,单词数,字节数 -l 直接查看文件行数 -L最长行的字符数 -w单词数 -c字节数 -m字符数
md5sum 计算和校验文件的md5值 md5sum a.txt >a.log 校验-c,check md5sum -c a.log
tr 一个个的替换字符
echo stu{1..4}|tr " " "\n"
stu1
stu2
stu3
stu4
删除字符
tr -d 0 <person.txt
tr -d '\n'<person.txt
dos2unix 把window \r\n下的文件转换成linux \n下可以支持的文件,因为两个平台的换行符不一样
stat 显示文件和文件系统状态(查看文件属性)
[root@web01 ~]# stat a.txt
File: `a.txt'
Size: 32 Blocks: 8 IO Block: 4096 regular file
Device: 803h/2051d Inode: 400892 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2019-02-26 15:14:24.665553780 +0800
Modify: 2019-02-26 15:13:46.516554392 +0800
Change: 2019-02-26 15:13:46.516554392 +0800
ps 查看进程 ps -ef
export 定义环境变量
export LANG=zh_CN.UTF-8
echo $LANG
locate ==搜索 netstat(ss)==查看网络信息 ntpdate ==更新时间 source ==使什么生效
kill -9 进程号 ps -ef|grep php|grep -v grep|awk '{print $2}'|xargs kill killall 进程名 pkill 进程名字
ping 使用的是icmp协议,ping -c3 -i2 -s512 www.baidu.com
-c<count> 设置完成要求回应的次数;默认会一直长ping -f 表示极限ping,ping过程中不显示任何信息,效率更高 -i<interval> 指定收发信息的间隔时间 -q 不显示指定执行过程,开头和结尾的相关信息除外 -s <数据包大小> 设置数据包的大小
route -n 查看网关,最后一条是默认网关 临时命令行生效 route del default gw 172.16.0.1 (删除默认网关) route add default gw 172.16.0,1 (新增默认网关)
trceroute www.qq.com 检查各个路由节点的情况 tracert -d www.qq.com 这个是用于win上的检查跟踪路由
检测端口开不开的三个命令telnet namp nc telnet www.baidu.com 80 namp www.baidu.com -p 80
不通的原因可能有: 1.80服务没开或者端口不存在 2.防火墙的阻挡 3.服务监听的端口不在连接的Ip上 4.ISP运营商默认不开端口,申请开端口
抓包工具: tcpdump 命令 tcpdump -n icmp -i eth0 namp扫描 windows:wireshark,sniffer,科来
关机命令 halt 、 shutdown -h now 、 init 0
passwd 修改用户密码 非交互式修改密码--stdin 表示接收前面的内容
echo 123456|passwd --stdin oldboy
ln 创建软硬链接,- s 软链接,不加参数表示创建硬链接
[root@www data]# ln -s oldboy.txt oldboy.txt_soft_file
[root@www data]# ll
-rw-r--r--. 1 root root 51 8月 7 20:47 oldboy.txt
lrwxrwxrwx 1 root root 10 8月 8 01:00 oldboy.txt_soft_file -> oldboy.txt
watch 周期性执行程序,打印到目录,默认2s,-n指定秒 ssh linux ssh客户端 -p port,-t打开终端
ssh连接到指定地址的用户执行命令: ssh -p52113 root@172.16.0.11 /sbin/ifconfig
公钥是锁-服务端 私钥是钥匙-客户端 客服端请求服务端,服务端发送一个私钥给客户端,客户端整合私钥成为秘钥对,再发送给服务端保持通信。
scp 远程安全拷贝 -P port -r目录 -p保持属性 -l limit限速
本地推到远端
scp -P52113 -rp /etc oldboy@10.0.0.61:/tmp
远端拉到本地
scp _p52113 -rp oldboy@10.0.0.61:/tmp/etc /data
od 查看二进制命令 od /bin/ls
basename 只生成文件名,去除对应的路径 dirname 获取文件的路径
last 显示最后登录过的用户的列表 /var/log/wtmp数据文件,不能直接查看
lastlog 汇报所有用户登录过的记录/var/log/lastlog
file 查看文件类型
[root@web02 ~]# file -b a.txt
ASCII text
crontab -l 查看定时任务
df -i 查看磁盘的Inode信息 -h 查看空间使用量
mount
挂载 mount /dev/sda1 /etc
把/etc挂载到sda1这个硬盘分区上,就可以访问这个磁盘了
-t 文件系统类型
-o 挂载的选项
unmount 卸载(-LF lf)强制卸载
dmesg 查看系统故障信息 id 查看用户和组信息 直接id显示的是当前用户的信息, oldboy id groupadd 添加组 groupadd oldboy usermod 更改用户属性 chmod 设置文件权限 chown 更改及设置用户和组 umask 控制文件默认权限 userdel 删除用户 -r删除家目录 chage 设置或修改用户密码有效期限 -l列表 -E修改有效期 echo '123456'|passwd --stdin oldboy
关于文件系统 dd convert and copy a file dd if=/dev/zero of=sun.txt bs=1M count=1 fdisk 磁盘分区工具(<2T使用),-l 列表 partprobe 让分区表的变化通知内核 mkfs 格式化 mkfs.ext4(mkfs -t ext4) -b 指定块 -I指定inode mkswap 格式化swap分区 swapon/swapoff 使用swap分区,例如swapon /dev/sdb1 mount -t type -o option 挂载 umount 卸载(-lf 强制卸载) df 查看 -i inode -h人类可读 -T文件类型 dumpe2fs 查看ext文件系统内部信息,元数据 fsck(e2fsck) 磁盘检查(磁盘坏了才能使用) parted 分区工具(常用大于2T) tune2fs 修改文件系统信息 megacli 查看做好的raid信息 ipmitools 查看硬件信息工具 resize2fs 调整文件系统大小(LVM,drbd)
du 计算文件空间,查看文件和目录大小 -sh(大小,人类可读)
dig dns解析相关命令 [root@www ~]# dig @1.1.1.1 www.qq.com +trace 指定dns服务器查询解析全过程
nslookup dns解析相关命令
host dns解析相关命令
[root@www ~]# host www.qq.com
www.qq.com has address 180.163.26.39
www.qq.com has IPv6 address 240e:e1:8100:28::2:16
ifconfig
查看网卡配置信息
重启某个网卡的操作方法:(否则,xshell会断网导致连接不到服务器)
ifdown eth0 && ifup eth0
ip ip - show / manipulate routing, devices, policy routing and tunnels
wget 下载 -q安静的 -O下载的时候指定文件名 netstat(ss) -lntup -a 查看网络信息 lsof -i :80 通过端口查看服务信息 list open file curl -I查看响应的header信息 -s安静的 -w获取状态码
常见的查看性能系统参数的命令:
vmstat 查看系统维度的CPU负载 vmstat 2 5 top 查看进程维度的CPU负载 P(cpu排序) M(内存排序) iostat CPU使用率、设备使用率和网络文件系统使用率 free 可以显示主内存和交换内存的统计量 sar 命令来收集、查看和记录服务器的性能数据 uptime 主要用于获取主机运行时间和查询linux系统负载等信息 w 显示目前登入系统的用户信息,也含有负载等信息
time 查看运行的时间
ab 压力测试 :同时处理100个请求并运行10次index.php
ab -c 10 -n 100 http://www.myvick.cn/index.php
-c10表示并发用户数为10 -n100表示请求总数为100 -t 20 持续时间
ab -c 1000 -n 1800 139.199.160.55:8080/
注意事项,不能直接填地址,后面要跟具体的位置,如/
lsmod 列出所有已载入系统的模块
jps 列出当前用户启动的java进程(含pid)
pwdx 查看当前pid进程启动时的工作目录,例如 pwdx 23242
git clone --depth 1 https://github.com/dogescript/xxxxxxx.git depth用于指定克隆深度,为1即表示只克隆最近一次commit.
systemctl daemon-reload centos7 系统重新加载服务启动项
rpm -qa bash-completion centos7 里面不全命令工具,超级好用哦