1、后台运行linux命令
1. command & : 后台运行,你关掉终端会停止运行
2. nohup command & : 后台运行,你关掉终端也会继续运行
3、ctrl +z 將前台任务丟到后台中暂停
4、jobs 查看后台的工作状态
5、fg %jobnumber 将后台的任务拿到前台来处理
6、bg %jobnumber 将任务放到后台中去处理
7、kill 管理后台的任务
2、输出重定向
cmdline [1-n] > file或文件操作符或设备
将一条命令执行结果(标准输出,或者错误输出,本来都要打印到屏幕上面的)重定向其它输出设备(文件,打开文件操作符,或打印机等等)
1,2分别是标准输出,错误输出。
例:sh test1.sh 1>suc.txt 2>err.txt
注意:
1)、shell遇到”>”操作符,会判断右边文件是否存在,如果存在就先删除,并且创建新文件。不存在直接创建。 无论左边命令执行是否成功。右边文件都会变为空。
2)、“>>”操作符,判断右边文件,如果不存在,先创建。以添加方式打开文件,会分配一个文件描述符[不特别指定,默认为1,2]然后,与左边的标准输出(1)或错误输出(2) 绑定。
3、删除操作
d+$ 删除光标后的内容
4、创建用户(root下操作)
adduser new_user
passwd new_user
5、关闭防火墙、SELinux
查看版本
lsb_release -a
防火墙
CentOS 6:
service iptables stop
chkconfig iptables off
CentOS 7:
systemctl stop firewalld
systemctl disable firewalld
SUSE:
service SuSEfirewall2_setup stop
service SuSEfirewall2_init stop
chkconfig SuSEfirewall2_init off
chkconfig SuSEfirewall2_setup off
SELinux:
CentOS:
sed -i “s/SELINUX=enforcing/SELINUX=disabled/g” /etc/selinux/config
setenforce 0
sestatus
重启
reboot
6、查询fs存储
df -hT 查看磁盘大小
free -h 查看物理内存
7、统计文件、文件夹,查看文件大小
查看当前目录下的文件数量(不包含子目录中的文件)
ls -l|grep "^-"| wc -l
查看当前目录下的文件数量(包含子目录中的文件) 注意:R,代表子目录
ls -lR|grep "^-"| wc -l
查看当前目录下的文件夹目录个数(不包含子目录中的目录),同上述理,如果需要查看子目录的,加上R
ls -l|grep "^d"| wc -l
ls -lht 查看当前目录下所有文件的大小,以及总和
du -sh * 查看指定文件\文件夹大小
du -h -d 不展开子目录
8、sed
#删除特定字符串
sed -i '/字符串/d' file
#特定字符串的行后插入新行
sed -i '/特定字符串/a 新行字符串' file
#特定字符串的行前插入新行
sed -i '/特定字符串/i 新行字符串' file
#替换掉每行的第一个字符串
sed -i 's/原字符串/新字符串/' file
#去掉 “行首” 带“@”的首字母@
sed -i 's/^@//' file
9、grep
grep [-acinv] [–color=auto] ‘搜寻字符串’ filename
选项与参数:
-a 或 --text : 不要忽略二进制的数据。
-A<显示行数> 或 --after-context=<显示行数> : 除了显示符合范本样式的那一列之外,并显示该行之后的内容。
-b 或 --byte-offset : 在显示符合样式的那一行之前,标示出该行第一个字符的编号。
-B<显示行数> 或 --before-context=<显示行数> : 除了显示符合样式的那一行之外,并显示该行之前的内容。
-c 或 --count : 计算符合样式的列数。
-C<显示行数> 或 --context=<显示行数>或-<显示行数> : 除了显示符合样式的那一行之外,并显示该行之前后的内容。
-d <动作> 或 --directories=<动作> : 当指定要查找的是目录而非文件时,必须使用这项参数,否则grep指令将回报信息并停止动作。
-e<范本样式> 或 --regexp=<范本样式> : 指定字符串做为查找文件内容的样式。
-E 或 --extended-regexp : 将样式为延伸的正则表达式来使用。
-f<规则文件> 或 --file=<规则文件> : 指定规则文件,其内容含有一个或多个规则样式,让grep查找符合规则条件的文件内容,格式为每行一个规则样式。
-F 或 --fixed-regexp : 将样式视为固定字符串的列表。
-G 或 --basic-regexp : 将样式视为普通的表示法来使用。
-h 或 --no-filename : 在显示符合样式的那一行之前,不标示该行所属的文件名称。
-H 或 --with-filename : 在显示符合样式的那一行之前,表示该行所属的文件名称。
-i 或 --ignore-case : 忽略字符大小写的差别。
-l 或 --file-with-matches : 列出文件内容符合指定的样式的文件名称。
-L 或 --files-without-match : 列出文件内容不符合指定的样式的文件名称。
-n 或 --line-number : 在显示符合样式的那一行之前,标示出该行的列数编号。
-o 或 --only-matching : 只显示匹配PATTERN 部分。
-q 或 --quiet或--silent : 不显示任何信息。
-r 或 --recursive : 此参数的效果和指定"-d recurse"参数相同。
-s 或 --no-messages : 不显示错误信息。
-v 或 --invert-match : 显示不包含匹配文本的所有行。 !!!!!取反
-V 或 --version : 显示版本信息。
-w 或 --word-regexp : 只显示全字符合的列。
-x --line-regexp : 只显示全列符合的列。
-y : 此参数的效果和指定"-i"参数相同。
10、awk
awk [options] ‘pattern{action}’ file
pattern包括两种特殊模式,分别是BEGIN和END
(1)BEGIN模式,是指命令在处理文本之前执行
(2)END模式,是指命令在处理文本之后执行
(3)BEGIN模式和END模式同时存在时,其中,BEGIN与END之间的{}相当于一个循环体,对文件中的每一行进行处理
options参数
(1)-F,用于指定输入分隔符
(2)-v,用于设置变量的值
从文件中输入变量
使用实例:
1)显示文件前5行内容
awk '{print}' file | head -n 5
2)将文件以冒号分隔,并取出第1、3、6位的数据
awk -F":" '{print $1 $3 $6}' file |head -n 5
3)将文件以冒号分隔,并取出第1、3、6位的数据,并用tab键作为分隔符
awk -F":" '{print $1 "\t" $3 "\t" $6}' file |head -n 5
4)以冒号为分隔符,显示一行中有多少字段
awk -F: '{print NF}' file |head -n 5
5)显示每一行的最后一个字段
awk -F: '{print $NF}' file | head -n 5
6)在每一行前面输出行号
awk '{print NR,$0}' file |head -n 5
7)显示文件中第五行数据
awk -F: 'NR==5{print}' file
11、快捷键
Ctrl + l 快速清屏
Ctrl + r 搜索历史命令
Ctrl + p 查看上一条历史命令
Ctrl + n 查看下一条历史命令
EXC + . 使用上一条命令的参数
!! 执行上一条命令
Ctrl + c 快速删除已输入命令(不执行)
vi编辑器下
shift + 4 或END 快速切换到行尾
shift + 6 或HOME 快速切换到行首
12、查看linux内核版本、系统版本
cat /proc/version or uname -a 查看内核版本
cat /etc/redhat-release or
13、curl命令
1)、定义
利用url规整在命令行下进行文件传输的工具,(http命令行工具)------上传and下载
2)、语法and常见参数
curl 【options】【url】
options:
-A/–user-agent string 设置用户代理发送给服务器
-b/–cookie name=string/file cookie字符串或文件读取位置
-c/–cookie-jar file 操作结束后把cookie写入到这个文件中
-C/–continue-at offset 断点续转
-r/–range range 检索来自HTTP/1.1或FTP服务器字节范围
-s/–silent 静音模式。不输出任何东西
-T/–upload-file file 上传文件
-u/–user user[:password] 设置服务器的用户和密码
-w/–write-out [format] 什么输出完成后d@filename
-x/–proxy host[:port] 在给定的端口上使用HTTP代理
-#/–progress-bar 进度条显示当前的传送状态
3)、附带文件
-d@filename
14、查看jar包版本
jar -xf ***.jar META-INF/BUILD.txt
15、mkdir
mkdir -p /home/aiops/aiops/var/com/{captain,waterdrop,atlas} #创建多个目录
16、tar
必要参数有如下:
-A 新增压缩文件到已存在的压缩
-c 建立新的压缩文件
-d 记录文件的差别
-r 添加文件到已经压缩的文件
-u 添加改变了和现有的文件到已经存在的压缩文件
-x 从压缩的文件中提取文件
-t 显示压缩文件的内容
-z 支持gzip解压文件
-j 支持bzip2解压文件
-Z 支持compress解压文件
-v 显示操作过程
-l 文件系统边界设置
-k 保留原有文件不覆盖
-m 保留文件不被覆盖
-W 确认压缩文件的正确性
tar -xzf *****.tar.gz #解压
tar -czf ***.tar.gz /file #压缩
17、unzip
18、iptables
防火墙策略介绍
https://blog.youkuaiyun.com/qq_41816540/article/details/83819243
hadoop防火墙配置
https://blog.youkuaiyun.com/xjping0794/article/details/77750147
iptables安装
https://www.cnblogs.com/faunjoe88/p/7003815.html
#设置iptable要先打开防火墙
systemctl status fireward
systemctl start fireward
#编辑/etc/sysconfig/iptables,加入如下命令
-A INPUT -p tcp --dport 0:60000 -j ACCEPT #INPUT后面是本地端口
-A OUTPUT -p tcp --sport 3180 -j ACCEPT #OUTPUT后面是对端要访问端口
service iptables restart #生效策略
service iptables save #保存策略
19、批量kill hadoop任务
for i in `yarn application -list -appStates ACCEPT|awk '{print $1}' ` ; do yarn application -kill $i ; done
20、split+cat 文件拆分
#切割
$ split -b 100m aso_platmonitor.sql aso_split
#合并
$ cat aso_splita* > aso_platmonitor.sql
split命令的语法如下:
split [--help] [--version] [-a ] [-b] [-C] [-l] [要分割的文件] [输出文件名前缀]
对应的参数描述如下:
-a:--suffix-length=N 使用的后缀长度(默认是2)
-b:--bytes=SIZE 每个输出文件的字节大小
-C:--line-bytes=SIZE 每个输出文件每行的最大字节大小
-d:--numeric-suffixes 使用数字后缀代替字母后缀
-l:--line=NUMBER 设定每个输出文件的行数
--help:显示帮助信息
--version:显示版本信息
下面将举例进行说明:
1.将文件demo.txt分割成多个文件,分割后每个文件大小为20M,命令如下:
$ split -b 20m demo.txt
2.将demo.txt文件分割成多个文件,分割后每个文件大小为20M,指定分割后的文件前缀为demo,命令如下:
$ split -b 20m demo.txt demo
3.将文件demo.txt分割成多个文件,每个文件为50万行,命令如下:
$ split -l 500000 demo.txt demo
4.将文件demo.txt分割成多个文件,每个文件50万行,指定分割后的文件后缀为数字,数字位数为3位,命令如下:
$ split -l 500000 -d -a 3 demo.txt demo
5.文件合并可以使用cat命令将切分后的文件合并成新的文件,命令如下:
$ cat demo0* > newdemo.txt
21、crontab
#查看crontab
crontab -l
#编辑crontab
crontab -e
格式如下
f1 f2 f3 f4 f5 cmd
其中 f1 是表示分钟,f2 表示小时,f3 表示一个月份中的第几日,f4 表示月份,f5 表示一个星期中的第几天。program 表示要执行的程序。
当 f1 为 * 时表示每分钟都要执行 program,f2 为 * 时表示每小时都要执行程序,其馀类推
当 f1 为 a-b 时表示从第 a 分钟到第 b 分钟这段时间内要执行,f2 为 a-b 时表示从第 a 到第 b 小时都要执行,其馀类推
当 f1 为 */n 时表示每 n 分钟个时间间隔执行一次,f2 为 */n 表示每 n 小时个时间间隔执行一次,其馀类推
当 f1 为 a, b, c,... 时表示第 a, b, c,... 分钟要执行,f2 为 a, b, c,... 时表示第 a, b, c...个小时要执行,其馀类推
例:
22 、scp/ssh免输入密码
需要先安装expect:sudo yum install -y expect
#!/bin/bash
des_pass=testtest
expect -c "
spawn scp target /aaa-0 .0.1.war root@192.168.1.30: /home/GameUser/MagicvesselUserWeb/aaa-release .war
expect \"password:\"
send \"${des_pass}\r\"
expect eof
"
23、if判断
#判断字符串相等
if [ "$ip" == "1.1.1.1" ];then
ip=${ip}-${devicename}
fi
#其他
24、开机自启动
#https://blog.youkuaiyun.com/hualinger/article/details/125321966
#方法1
/etc/rc.local中添加自启动命令
#方法2
/etc/init.d 目录下添加自启动脚本
#例如自启动hadoop
#!/bin/bash
#chkconfig:35 95 1
#description:script to start/stop hadoop
su - bizseer <<!
case $1 in
start)
sh /bs/aiops/opt/hadoop/sbin/start-all.sh
;;
stop)
sh /bs/aiops/opt/hadoop/sbin/stop-all.sh
;;
*)
echo "Usage:$0(start|stop)"
;;
esac
exit
!
25、alias设置别名
alias ll="ls -lht"
26、查看CPU核数
top 1
27、vi、vim编辑
#替换字符穿
%s/{需要替换的字符串}/{替换后的字符串}/g
28、替换挂载磁盘
lsblk #查询未挂载的磁盘
pvs #查询已创建的PV
PV VG Fmt Attr PSize PFree
/dev/vdb gitlab lvm2 a-- <300.00g 1020.00m
/dev/vdc aiops lvm2 a-- <300.00g 1020.00m
/dev/vdd data lvm2 a-- 279.39g 404.00m
pvcreate /dev/vde #创建PV
vgcreate test /dev/vde #创建VG,与前面查询的不要重复
lvcreate -n test -L 279G test #分配磁盘空间
mkfs.xfs /dev/test/test #格式化
mkdir /t #创建临时目录
mount -t xfs /dev/test/test /t #挂载到临时目录
rsync -azvr /data/ /t #将/data/目录下的文件同步到 /t下
sed -i 's#/dev/data/data#/dev/test/test##' /etc/systemd/system/data.mount #替换挂载磁盘
systemctl daemon-reload
reboot #重启加载磁盘
29、ssh 免密配置
https://www.cnblogs.com/maotou/p/15941618.html
1、编辑sshd服务配置文件,开启免密验证, vi /etc/ssh/sshd_config
打开文件后,去掉以下3行的"#"注释
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
重启 sshd 服务,使用命令:/sbin/service sshd restart
2、创建免密登录账号
使用如下命令创建:
useradd xxxuser //创建用户
passwd xxxpwd //设置登录密码
3、生成密钥
切换到新建账号xxxuser, sudo xxxuser
执行命令:ssh-keygen -t rsa 回车后生成如下两个文件(注意待生成文件路径~/.ssh/)
id_rsa //私钥
id_rsa.pub //公钥
4、复制公钥文件id_rsa.pub到要访问该公钥机器的所有目标机器