本文是记录我之前工作中用到的关于linux的知识的一部分. 主要是针对OEL/RHEL/Centos的, (shell功能主要用的是bash的)
如果你都会了的话, 那你很棒棒哦.
基本上都是很实用的, 如果是零基础的,不推荐看本笔记.
后续的像awk,grep,sed,之类的, 或者像基础文件描述符,标准输入输出, 变量 正则之类的可能会专门讲(之前太熟了,就没记笔记, 再过一段时间,就该忘完了....).
这笔记量大概是2.5年的.
#设置历史记录格式 /etc/profile
export HISTTIMEFORMAT="%F %T: "
#修改主机名:
6:hostname ddcw
vim /etc/sysconfig/network
7: hostnamectl set-hostname ddcw
#修改时间:
date -s 15:33:00
date -s "20190530 14:50:00"
date -s "2019-05-30 14:50:00"
#获取时间赋值给变量:
dt=$(date +%Y%m%d-%H:%M:%S)
#安装图形化桌面
yum grouplist
yum groupinfo "Server with GUI"
7: yum -y groupinstall x11
yum -y groupinstall gnome-desktop
systemctl get-default
systemctl set-default graphical.target
#systemctl set-defaultmulti-user.target
reboot
#设置开机启动级别
7: systemctl get-default
systemctl set-default graphical.target
systemctl set-default multi-user.target
6: vim /etc/inittab
#VNC
7: yum -y install tigervnc-server
cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@.service
vi /etc/systemd/system/vncserver@.service
ExecStart=/sbin/runuser -l root -c "/usr/bin/vncserver %i -geometry 1024x768"
PIDFile=/root/.vnc/%H%i.pid
#vncpasswd
cd ~/.vnc
vncserver 按tab键就明白了
或者 vncserver :1
vncserver :2
VNC:
yum install tigervnc-server -y
vncpasswd << 123456
vncserver :1
vncserver -list #查看vnc端口
vncserver -kill :1 #杀掉vnc :1
#NFS
server:
yum install nfs-utils -y
mkdir /shared_data
vim /etc/exports
/shared_data *(rw,sync,no_wdelay,insecure_locks,no_root_squash)
chkconfig nfs on
service nfs restart
client:
yum install nfs-utils -y
mkdir -p /u01/oradata
vim /etc/fstab
nfs_serverip_or_name:/shared_data /u01/oradata nfs rw,bg,hard,nointr,tcp,vers=3,timeo=600,rsize=32768,wsize=32768,actimeo=0 0 0
mount /u01/oradata
#SWAP扩分区
cat /etc/fstab
swapoff -v /dev/mapper/vg01-lv01 #停用
lvresize -L 2560M /dev/mapper/vg01-lv01 #扩为2.5G
mkswap /dev/mapper/vg01-lv01 #格式化为swap
swapon -v /dev/mapper/vg01-lv01 #启用
free -m #查看
#df -h
#lsblk
#dh -sh . || du -sh ./*
#vim全局替换
:%s/str1/str2/g
#去掉空白行
cat /home/oracle/db.rsp | grep -v "#" | sed '/^$/d' | grep -e '=.'
#去掉行首空格
sed -i 's/^\s*//' fileName.txt
#sed去掉匹配的上一行
sed -i '$!N;/\n.*STRINGS/!P;D' FILENAME
#sed去掉匹配的下一行
sed -i '/STRINGS/{n;d}' FILENAME
#vim交换数据
:%s/str1/temppppppppp/g
:%/str2/str1/g
:%/temppppppppp/str2/g
#查看端口进程命令
lsof -i
#限制部分主机SSH登录
cat /etc/hosts.allow
sshd:192.168.1.2
sshd:192.168.1.3
cat /etc/hosts.deny
sshd:all
dstat
#创建镜像
cp ks.cfg isolinux/ks.cfg
mkisofs -R -J -T -v -no-emul-boot -boot-load-size 4 -boot-info-table -V OEL68mini -b isolinux/isolinux.bin -c isolinux/boot.cat -o /u01/oel68mini.iso .
#vsftpd添加用户
usermod -d /oradata/utf8db/test test
#查看连接数
SYN_RECV表示正在等待处理的请求数;
ESTABLISHED表示正常数据传输状态;
TIME_WAIT表示处理完毕,等待超时结束的请求数。
netstat -n | awk '/^tcp/ {n=split($(NF-1),array,":");if(n<=2)++S[array[(1)]];else++S[array[(4)]];++s[$NF];++N} END {for(a in S){printf("%-20s %s\n", a, S[a]);++I}printf("%-20s %s\n","TOTAL_IP",I);for(a in s) printf("%-20s %s\n", a, s[a]);printf("%-20s %s\n","TOTAL_LINK",N);}'
netstat -n | awk '/^tcp/ {++S[$NF]} END {for (a in S) print a, S[a]}'
#sqlplus界面可以用 backspace (退格键)
cat .bash_profile
........
stty erase ^H
#本地连接中 time_wait
netstat -tnp | grep TIME_WAIT | awk '{print $4}' |sort | uniq -c | sort -nr
#连接中外地的IP
netstat -tnp | awk '{print $5}' | sort | uniq -c |sort -nr
#查看本地TCP状态排序
netstat -ntp |awk '{print $6}' | sort | uniq -c
#查看服务器某地址端口的连接数
netstat -nat | grep 222.143.12.8:7005 |awk '{print $5}' | sort | uniq -c | sort -rn
#每个2秒打印一次,一共打印3次
#vmstat 2 3
#安装telnet
yum install telnet-server -y
yum install xinetd -y
systemctl enable xinetd.service
systemctl enable telnet.socket
systemctl start telnet.socket
systemctl start xinetd
yum install telnet -y
#查看内存占用前10 的进程
ps aux --sort -rss | awk '{print $1" "$2" "$3" "$4" "$NF}' | head -10
ps aux --sort -rss | awk '{print $1"\t"$2"\t"$3"\t"$4"\t"$NF}' | head -10
#查看CPU占比
cat <(grep 'cpu ' /proc/stat) <(sleep 1 && grep 'cpu ' /proc/stat) | awk -v RS="" '{print ($13-$2+$15-$4)*100/($13-$2+$15-$4+$16-$5)}'
#每个5秒执行一次
warch -n 5 ls
#推荐设置DISPLAY
export DISPLAY=`last | head -1 | awk '{print $3}'`:0.0
#tar
打包 tar -cvf filename.tar.gz file1 file2
打包并压缩gzip tar -zcvf filename.tar.gz file1 file2
解压gzip tar -zxvf filename.tar.gz
打包并压缩bzip2 tar -jcvf filename.tar.gz file1 file2
解压bzip2 tar -jxvf filename.tar.gz
#开放本地端口8888
iptables -A INPUT -p tcp --dport 8888 -j ACCEPT
firewall-cmd --permanent --add-port=443/tcp
firewall-cmd --add-service=http
#每隔两秒打印一次PID的gc情况
jstat -gcutil PID 2000
#java dump PID 的内存情况
jmap –dump:format=b,file=PID.dumpfile PID
#查看排名第一的java jstack
javajc=`top -n 1 | tail -n +8 | grep java | awk '{print $2}' | head -1 `
top -n 1 | tail -n +8 | grep java | awk '{print $2}' | head -1 | xargs -t -i top -n 1 -Hbp {} | tail -n +8 | awk '{print $1}' > TOPPID.info
for i in {1..5}
do
top -n 1 | tail -n +8 | grep java | awk '{print $2}' | head -1 | xargs -t -i top -n 1 -Hbp {} | tail -n +8 | awk '{print $1}' >> TOPPID.info
done
threadn1=`cat TOPPID.info | sort | uniq -c | sort -rn | head -1 |awk '{print $2}'`
#查看服务器厂商
[root@ddcwnfs ~]# dmidecode -s system-product-name
VMware Virtual Platform
[root@ddcwnfs ~]#
#这个是当初分析java的时候用的,不全.
thread16=`xargs -t -i printf "%x\n" ${threadn1}`
jstack ${threadn1} | grep ${thread16} -A 30
#linux下数组使用(数组下标是变量的时候,不要$)
#!/bin/env /bash
shuzu=(1 2 3 4)
for i in ${!shuzu[@]}
do
echo ${shuzu[i]}
done
#设置随机密码(8位)
mkpasswd -l 8
#设置PS1
cat .bashrc
export PS1="\t [\u@\h \W]\$ "
#扫描本地端口
for i in {1..65536}; do if echo &>/dev/null > /dev/tcp/127.0.0.1/${i} ;then echo -e "\t\033[31;40m${i}\033[0m is open"; fi; done
#扫描其它主机端口
other_host=127.0.0.1
for i in {1..65536}; do if echo &>/dev/null > /dev/tcp/${other_host}/${i} ;then echo -e "\t\033[31;40m${i}\033[0m is open"; fi; done
#循环插入数据的shell脚本
for i in {1..1000}
do
sqlplus ygss/ygss@192.168.101.171:1521/oggspdb <<EOF
`echo -e "insert into student values($(date +%s%N),'$(cat /dev/urandom | head -n 10 | md5sum | head -c 10)');\ncommit;"`
EOF
sleep 0.5
done
#RPM查询
rpm --query --queryformat "%{NAME}-%{VERSION}.%{RELEASE} (%{ARCH})\n" binutils
#yum查看包组
yum groupinfo 'core'
#RPM强制卸载,安装也可以使用--nodeps去忽略依赖
rpm -e rlwrapDDCW --noscripts --nodeps
#--nodeps 忽略依赖
#--noscripts %postun脚本失败也继续
#设置默认shell #cat /etc/shells可以看见有哪些shell
chsh -s '/bin/bash'
#echo $SHELL #查看当前的SHELL
#查看字体:
fc-list
fc-list | grep -i simsun #查看宋体
fc-list | grep -i nsimsun #查看新宋体
#安装字体:
cp simsun.ttc /usr/share/fonts/ #拷贝字体到字体目录,只要拷贝过去就行
mkfontscale #字体扩展
mkfontdir #新增字体目录,可以省略
fc-cache -fv #刷新缓存
#echo 颜色:
for COLOR in {1..255}; do echo -en "\e[38;5;${COLOR}m \\e\[38;5;${COLOR}m"; done;echo -e "\n\033[31;40mecho -e \"\\\eCOLOR STRINGS_BY_YOURSELF\"\033[0m"
#先修改目录,再修改文件,注:不能把标准错误输出去掉(2>/dev/null),因为mv存在的名字时,会提示是否覆盖,这个需要人工去比对,这个提示属于标准错误输出
for dname in `find ./ -type d`; do mv $dname `echo $dname|tr [A-Z] [a-z]` ; done
for fname in `find ./ -type f`; do mv $fname `echo $fname|tr [A-Z] [a-z]` ; done
#yum下载包
1.直接下载包
yumdownloader htop
2.本地没有安装才能下载(本地安装了就下载不了)
yum install --downloadonly --downloaddir=/tmp htop
#定制bash自动补全变量
shopt -s direxpand histappend
#ping域名慢,加个超时即可.
cat /etc/resolv.conf
options timeout:1 attempts:1 rotate
#tcpdump抓包,然后把test.cap下载下来用wireshark打开分析即可.
tcpdump dst host 114.114.114.114 and src host 172.30.0.17 -c 100 -i eth0 -w test.cap
#-c 100 表示抓完100个包自动退出.默认是直到kill或者ctrl+c
#-w test.cap 保存到test.cap里面去,不停止的话,是不会写文件的.
#-i eth0 表示抓取网卡eth0的包
RAID技术(以下的盘,可以代表磁盘组):
raid 0 : 把数据分散到每块盘上,所以IO是翻倍的,至少两块盘, 坏一块盘就GG了.
radi 1 : 镜像,也就是每块盘都有一份数据. 读取速度会提升, 写不会(甚至降低一点点,可忽略)
raid 2 : 专门拿一块盘做校验(海明码校验,比特级别的),最少三块盘.
raid 3 : 专门拿一块盘做校验(字节级别的),最少三块盘.
raid 4 : 类似raid2 或者 3, 只是分割单位不一样.
raid 5 : 以块为单位校验, 校验码会被写入不同的磁盘.
raid 10 : 把做了raid1的盘做raid0.
#查看本地TCP连接状态:
netstat -natp | tail -n +3 | grep -v tcp6 | awk 'BEGIN {printf "%-30s%-30s%-30s%-15s\n","Local_IP/PORT","Foregin_IP/PORT","Stat","PID/Program name"} {printf "%-30s%-30s%-30s%-15s\n", $4,$5,$6,$7}'
#查看oralce alert_日志,高亮显示 (还挺好用的)
need_day='2020-08-31' #2020.8.31及之后的日志
logfile='alert_*.log'
KEY_VAR='error'
#查看某时间之后的日志:
eval sed -n '/${need_day}T[0-9][0-9]:[0-9][0-9]:[0-9][0-9]/,\$p' ${logfile}
#把时间变为绿色: 格式为: 2020-09-01T13:02:00
eval sed 's/[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]T[0-9][0-9]:[0-9][0-9]:[0-9][0-9]/$(echo -e "\033[32;40m\\\0\033[0m")/g'
#把关键词 KEY_VAR 变成红色
eval sed 's/${KEY_VAR}/$(echo -e "\033[31;40m\\\0\033[0m")/g'
tail -10000 alert_ddcw19.log | eval sed 's/[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]T[0-9][0-9]:[0-9][0-9]:[0-9][0-9]/$(echo -e "\033[32;40m\\\0\033[0m")/g' | eval sed 's/error/$(echo -e "\033[31;40m\\\0\033[0m")/g\;s/ORA-[0-9][0-9][0-9][0-9][0-9]/$(echo -e "\033[31;40m\\\0\033[0m")/g' | more
#一键生成war包index.war. 当前目录不能有index.html和index.war
mkdir -p /tmp/.flag_war_dir_by_ddcw && echo -e "<h1>IP DETAIL</h1>$(ifconfig | grep inet | grep -v inet6 | awk '{print $2"<br>"}')<br><br> <h1>CPU</h1>pyhsical: $(cat /proc/cpuinfo | grep physical | grep id | sort | uniq | wc -l)<br>processor:$(cat /proc/cpuinfo | grep processor | wc -l)<br><br> <h1>MEMINFO</h1>Total:$(cat /proc/meminfo | grep MemTotal | awk -F : '{print $2}' | awk '{print $1}')<br>MemAvailable:$(cat /proc/meminfo | grep MemAvailable | awk -F : '{print $2}' | awk '{print $1}')" > index.html && jar -cvf index.war index.html
#rpm查询依赖:
rpm -qpR ansible-2.9.10-1.el7.noarch.rpm
#rpm查询所安装的文件:
rpm -ql ansible
#rpm查询安装包信息
rpm -qi ansible
#rpm查询命令所属rpm包
rpm -qf /bin/split
#删除匹配内容上面的所有内容
cat /etc/passwd | sed '1,/test/d'
#vim设置tab建空格为4
set ts=4
#ssh 测试端口连通性
ssh 127.0.0.1 -p 22 -o BatchMode=yes
echo $(ssh 127.0.0.1 -p 22 -o BatchMode=yes -o StrictHostKeyChecking=yes 2>&1 ) | grep refused >/dev/null 2>&1 || echo " is open"
#refues 表示端口未开放, 其它均为开放.
#ssh 扫描服务器开放的端口(比较慢)
for i in {1..15000}; do echo $(ssh 127.0.0.1 -p ${i} -o BatchMode=yes -o StrictHostKeyChecking=yes 2>&1 ) | grep refused >/dev/null 2>&1 || echo "${i} is open" ; done
#ssh并发扫描端口(并发数为CPU的2倍)
#telnet扫描服务器端口:
for i in {1..65536}; do (echo 'q')|telnet -e 'q' 127.0.0.1 ${i} >/dev/null 2>&1 && echo -e "\033[31;40m${i}\033[0m\tis open"; done
#nmap扫描端口
nmap 127.0.0.1
#每行显示长度, 每行显示6个字段
echo {1..20} | xargs -n 6
#批量杀进程(如nginx), 这个有很多方法实现的.
ps -ef | grep nginx | grep -v grep | xargs -t -i kill -9 {}
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。