文章

Linux

oracle 导出

1
2
CREATE OR REPLACE DIRECTORY dbbak_dir AS 'C:/data_bak/';
expdp smgw/passwd tables=LG_DM_20211024 directory=dbbak_dir dumpfile=LG_DM_20211024.dmp compression=all

oracle 导入

1
impdp smgw/passwd tables=LG_DM_20211024 directory=dbbak_dir dumpfile=LG_DM_20211024.DMP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
ps axo nlwp,pid,cmd | sort -rn | head -10 #查看线程最多的10个进程
for i in $(ls /proc | grep "^[0-9]" | awk '$0>100'); do awk '/Swap:/{a=a+$2}END{print '"$i"',a/1024"M"}' /proc/$i/smaps;done| sort -k2nr | head #查找swap占用最高的几个PID
find . -name "*ABC*" -exec grep -H 'XYZ' {} +  #查找字符串所在的文件名
iconv -f GBK -t UTF-8 file1 -o file2 #文件gbk转utf8
sed -i '1s/^\xEF\xBB\xBF//' 1.CSV #去除UTF8-BOM 格式
less 1_a.txt | awk -F "[ :,]" '{for(i=1;i<=NF;i+=2)$(i+1)="|"}1'  > aaa.txt #打印奇数列 1 3 5 7 9等
rsync -avzP --bwlimit=50000 -e "ssh -i  /data/users/shanhe/.ssh/z_id_rsa" postgres@192.168.111.111:/tmp/csv/ #断点续传,限速50M
zcat tomcat7980_*.tgz | grep --binary-files=text provOrderId #zcat 提示是二进制
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' #查看连接数
split -l990000 xam -d -a 2 request && ls | grep requ |xargs -n1 -i{} mv {} {}.txt #split 99万,并自动重命名
ps -p PID -o lstart #查看进程启动时间
grep -r --include="*.java" studentinfo . #根据后缀名搜索
awk '{print NF;exit}' #查看文件有多少列
grep -oP '(\d{1,3}\.?){4}' #提取文本中的ip地址
awk '!a[$0]++' file #删除重复行
unset HISTFILE #执行之后,以后的bash记录不会记录到history里面
awk 'BEGIN { cmd="cp -ir /www/web/* ."; print "n" |cmd; }' #批量复制一些文件但不覆盖已经存在的文件或者文件夹
ls | awk '{ print "tar zcvf "$0".tgz " $0|"/bin/bash" }' #将当前目录下每个文件夹和文件各自压缩
alias survey="history |awk '{a[\$2]++} END{for(i in a){printf \"%5d\t%s \n\",a[i],i}}'|sort -rn|head"
alias df="df -h -P --total --exclude-type=devtmpfs 2>/dev/null"
alias psmem='ps -eo pid,vsz,comm |sed -e 1d | sort -k2 -nr | awk '"'"'{a=$2; if ($2>0) {print $1, $2/8/1024, "MB", $3}}'"'"
ps -e -o ppid,stat | grep Z | cut -d ' ' -f1 | xargs kill -9 #杀死僵尸进程
wget -xnH -i test.txt #带目录下载文本中的链接
shopt -s extglob # 启用!命令,可以用 mv !(backup) * backup 移动当前除backup文件夹以为的文件到backup文件夹
ls | grep -v abc | xargs -i rm -rf {}   #反向删除 带abc 之外的文件
tar cvf xxx.tar -T 1.list #按照列表中的文件信息打包
jar uvf webf.jar appconfig.xml #更新jar包中的文件
du -h --max-depth=1 #统计当前目录下各目录的大小
%s/a/w/g      #vi下面批量替换 把a 批量缓存w 在:模式下
tar -tvf  #可以看tar包中的文件 不用解压.
tar czf web.tgz * --exclude old --exclude fonts #压缩当前文件和文件夹 排除 old 和fonts 文件夹
\cp rf *  /usr/local/apache/htdocs  #复制当前所有文件和文件夹到htdocs
pkill -9 -t pts/3  # 结束tty 3的 会话
ll | grep ^d |awk '{print $9}'|xargs -i rm -rf {} #删除当前目录下的文件夹
set nonu #vi 取消行号
ll -i #查询乱码文件的inode号
find . -inum 1059245|xargs -i  mv {} logo.png #改名
find . -inum 1059245 -exec mv {} 1.txt \; #上面的有时候不行,可以换换这个
vi + /etc/profile
PATH=$PATH:/usr/local/apache/bin
source /etc/profile
#把apache加入系统变量
#Error: Package: glibc-headers gcc make的装不上
vi /etc/yum.conf
把exclude=kernel*注释掉
echo ulimit -n 65535 >>/etc/profile #修改最大文件打开数 临时增加 下面的是永久增加需要重启
cat >> /etc/security/limits.conf <<EOF
* soft nproc 65535
* hard nproc 65535
* soft nofile 65535
* hard nofile 65535
EOF
find /data/mysql_backup/ -ctime +5 | xargs -i rm -rf {} #删除当前文件夹下5天前的文件夹和文件
watch -n 1 date #动态显示当前系统时间
arping 192.168.1.33 #检测有没有和自己ip冲突的机器.
netstat -na|grep ESTABLISHED| grep :80 | wc -l #查询已经建立连接的80端口的连接数
ls -lSh /www/web/*.jpg |head #找出目录下最大的文件
vim 下批量注释
按v 进入 可视 模式 选好要注释的行,然后按 ctrl+v 进入 可视 块 模式,然后按 大写#的 I 输入 #号 再按两下esc键 就可以了
删除注释:在 可视 块 模式下 选择第一列的 # 按d删除
:50,70 s/^/#   #vi 下面 注释50~70行
 find . -type d -perm 700 -exec ls -ld {} \;#找出当前目录下有写权限的目录.
zip -q -r laomm.zip * -x *.MP3 ./upload/* #压缩当前文件夹下面的文件但排除mp3文件和upload 文件夹.
jar -uf cctv.jar system.cfg #更新架包下面一个文件.
dstat -nf #查看网卡即时流量
echo 3 > /proc/sys/vm/drop_caches #手工释放内存
cat $i | sort -t '|'  -k4,4 -r | sort -t '|' --unique --stable -k1,1 >${i/_n/} #根据第一列去重,同时保持第四列中最大的那个值
sed -i 's/^M//g' #删除^M ^M输入方式为 ctrl+v ctrl+m
grep -F -v -f cq2.txt cqxx.txt | sort | uniq >cqrrrr.txt #取文件的差集,前面的减后面的
less 1116.txt | grep -o -P '(?<=www).*(?=com)' #提取www 和 com 字符之间的数据
awk '!a[$0]++' file #删除重复行
awk '{if (length($0) != 11) print $0}' #匹配11位手机号
awk 'BEGIN{ FS="|" } { for(fn=1;fn<=NF;fn++) {print fn" = "$fn;}; exit; }' gxlt0731.csv 查看字段列位置
ERROR:  invalid byte sequence for encoding "UTF8": 0x00
用sed 替换 sed -i.bak 's/\x0//g' 1_n.csv
sed '1s/^\xEF\xBB\xBF//' 去除开头 UEF
grep -o '[0-9]\{11\}' 1.txt  #匹配11位手机号
sed -i 's/\s\{1,\}/|/g' 2.txt  替换一个或者多个空格
sed -i 's/^M//g' 删除^M ^M输入方式为 ctrl+v ctrl+m
cut -d "|" -f1-37,39-41,43- 66_32.tsv 删除第38、42列
sed -i 's/\x01/|/g' 00000* hive 分隔符替换
cat 111.txt | sort | uniq -d 显示重复行,-D显示所有的,注意要用sort 排序下,uniq -d 只能识别相邻的行
sed '/^#/d;/^$/d;/^[\t]/d' #删除注释,空行,开头是空格的行
cat filename | tr -d '\r' > newfilename
mpstat -P ALL 2 1000 看cpu核心
curl ifconfig.me #看自己的公网ip cip.cc
grep -wf aaa.txt bbb.txt 取文件交集
grep -F -v -f cq2.txt cqxx.txt | sort | uniq >cqrrrr.txt 取差集,后面的文件去除包含前面文件里的内容
less 1116.txt | grep -o -P '(?<=a\\\":\\\").*(?=\\\"\,\\\"b)' 提取字符之间的数据
less 1116.txt | grep -o -P '(?<=www).*(?=com)' 提取www 和 com 字符之间的数据
ps axo nlwp,pid,cmd | sort -rn | head -10 #查看线程最多的10个进程
zcat tomcat7980_*.tgz | grep --binary-files=text provOrderId zcat 提示是二进制
rsync -avzP -e "ssh -i `pwd`/.ssh/p_rsa" postgres@192.168.111.149:/tmp/csv/ 断点续传
rsync -avzP --bwlimit=50000 -e "ssh -i  /data/users/zhouz/.ssh/ws_id_rsa" postgres@192.168.111.149:/tmp/csv/ 断点续传,限速50M
rsync -avzP --bwlimit=50000 -e "ssh -i  /data/users/zhouz/.ssh/ws_id_rsa" wangshen@192.168.111.200:/data/users/wangshen/qushu/20180113/ 断点续传,限速50M
rsync -avzP --bwlimit=50000 -e "ssh -i  /data/users/zhouz/.ssh/ws_id_rsa -p32022" wangshen@192.168.111.200:/data/users/wangshen/qushu/20180113/* .
less 1_a.txt | awk -F "[ :,]" '{for(i=1;i<=NF;i+=2)$(i+1)="|"}1'  > aaa.txt 打印奇数列 1 3 5 7 9等
awk -F "[|_=]" '{print $2}' 1.txt  awk 指定多个分隔符,[ ] 这里写要指定的分隔符,如果分隔符是[] 则用 awk -F ‘[][]’ 
cat aaa.log|awk '{print $2}'|sort |uniq -c |wc -l 统计访问量最高的几个IP地址
cat aaa.log|awk '{print $2}'|sort |uniq -c|sort -rn 
echo -e '\xf' 查看二进制文件乱码
终端乱码 可以执行 reset 命令
sed -i.bak '/pattern to match/d' ./infile sed删除文件前,自动创建一个.bak的文件。
split -l990000 xaa -d -a 2 request split 实现自增分割
iconv -f gbk -t utf8 filename gbk转utf8
sort -t '|' -k 1,1 -u 832.txt 根据第一列进行去重
实现group by功能
awk -F "," '{OFS="|"} {print $2,$12}' gx2.csv 输出指定分隔符
awk -F '|' '{arr[$1]+=1}END{for(i in arr)print i,arr[i]}' --$1 为要统计的列 分组统计 实现group by
awk -F '|' '{arr[$2"|"$32]+=1}END{for(i in arr)print i"|"arr[i]}' xxx.txt | sort -t"|" -n -r -k3
cat * | iconv -f GBK -t UTF-8  转编码
grep -o '<a href=['"'"'"][^"'"'"']*['"'"'"]'| \
  sed -e 's/^<a href=["'"'"']//'-e 's/["'"'"']$//'
替换超链接表达式
wget -c -r -nd -np -A "*.bak" http://61.155.178.247:3333/h120/script/ 指定下载格式的文件
more /etc/sysconfig/clock 查看当前时区
cat smsmobile.csv | sed 's/.$/ 0/' > sms.csv 追加一列
#批量改文件名
for var in x*; do mv "$var" "$var.txt"; done
grep -Fvf ip.txt logfile  过滤ip.txt列表里的内容
awk 列模糊匹配
cat gxdx01.txt | awk -F '|' '{ if ($2 !~ /G/)print $0}' >gxdx02.txt
# find 查找排除某个文件
find ./cache ! -name '*.html' -type f    
sh test.sh && echo " " | /bin/mail -s "杭州任务执行完成了" test@test.com #执行任务监控
find -type f  -print |  xargs  grep "include" | awk '{gsub(":"," ");print $1}' | uniq -c
su 之后 无法运行 screen命令的解决方法 script /dev/null
查找文件->过滤文件名->去重
#$year$month_mm$day_dd
列出文件中出现关键字的次数和文件名
关闭/打开Linux内核dmesg中时间戳信息
关闭时间戳信息(Disable dmesg timestamp)
echo N > /sys/module/printk/parameters/time
打开时间戳信息(Enable dmesg timestamp)
echo Y > /sys/module/printk/parameters/time
时间戳转换成可读时间
alias dmesg='dmesg|perl -ne '"'"'BEGIN{$a= time()- qx!cat /proc/uptime!};s/( *)(\d+)\.\d+/localtime($2 + $a)/e; print $_;'"'"
date -d "1970-01-01 UTC `echo "$(date +%s)-$(cat /proc/uptime|cut -f 1 -d' ')+478880.926165"|bc ` seconds"
find . -name "*ABC*" -exec grep -H 'XYZ' {} +  查找字符串所在的文件名
#互信
ssh-keygen -t rsa
ssh-copy-id -i ~/.ssh/id_rsa.pub root@a
ssh-copy-id -i ~/.ssh/id_rsa.pub "-p 2022 ztsms@61.155.155.243" #带端口的互信
authorized_keys
yum install lrzsz
scp -P 2022 yc.txt ztsms@61.155.155.243:/home/backup # scp 带端口复制
scp -P 32022 -l 80000 flow_sms_sent.txt liuzhiguo@61.155.178.246:/data/liuzhiguo/ scp内网限速 10mb/s
scp -P 32022 -l 160000 flow_sms_sent.txt liuzhiguo@192.168.111.201:/data/liuzhiguo/ 复制到总库
scp -P 32022  flow_sms_sent.txt liuzhiguo@61.155.178.246:/data/liuzhiguo/
shopt -s extglob 启用 !命令
Permissions 0644 for '/root/id_rsa' are too open.
chmod 400 /root/id_rsa
scp -P 32022 -i id_rsa flow_sms_sent.txt liuzhiguo@61.155.178.246:/data/liuzhiguo/ 指定证书传送
sed -i '/2015-10-23 02:11/,/2015-10-23 08:25/d' c.out 删除时间段的日志
q9bsm3FY6ZWy ztsms 243普通
access_log off; nginx关闭访问日志
ssh -C -f -N -g -R 3388:127.0.0.1:3389 root@61.155.155.243 -p 2022 #ssh隧道
iptables -t nat -I OUTPUT -p tcp  -d 127.0.0.1 --dport 3389 -j REDIRECT --to-port 3388 #端口转发
ethtool eth0 测试网线是否插好. 看speed
sed -n '/2015-12-16 21:01/,/2015-12-16 23:01/p' 截取时间段的日志
java -jar jar包名  执行jar包
ls -l | awk '{if ($5 == 0) print $NF}' | xargs -i rm -f {} --删除空文件
curl --interface em2 http://133.193.17.201/bssframe curl 指定网卡
ping -I eth0 10.10.10.1
ping -I eth1 10.10.10.1  ping 指定网卡
sudo yum install zlib-devel readline-devel #安装postgresql所需组件
vim dos转unix  
set ff=unix
sed -i 's/^M//g' Config.properties_bak 
iostat: command not found  yum install sysstat
iostat -x -d -k 1 查看i/o性能
mail: command not found yum install mailx
nginx 编译选项
yum -y install openssl-devel pcre-devel zlib-devel gcc automake autoconf libtool make gcc gcc-c++
./configure --prefix=/usr/local/nginx/ --user=www --group=www --with-http_stub_status_module --with-http_spdy_module --with-http_ssl_module --with-ipv6 --with-http_gzip_static_module --with-http_realip_module --with-http_flv_module
php 编译选项
yum install -y libmcrypt-devel libjpeg-devel libpng-devel freetype-devel curl-devel openssl-devel libxml2-devel
./configure --prefix=/data/app/php --with-config-file-path=/data/app/php/etc \
--with-fpm-user=www --with-fpm-group=www --enable-fpm --disable-fileinfo \
--with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd \
--with-iconv-dir=/usr --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib \
--with-libxml-dir=/usr --enable-xml --disable-rpath --enable-bcmath --enable-shmop --enable-exif \
--enable-sysvsem --enable-inline-optimization --with-curl --enable-mbregex --enable-inline-optimization \
--enable-mbstring --with-mcrypt --with-gd --enable-gd-native-ttf --with-openssl \
--with-mhash --enable-pcntl --enable-sockets --with-xmlrpc --enable-ftp \
--with-gettext --enable-zip --enable-soap --disable-ipv6 --disable-debug
make ZEND_EXTRA_LIBS='-liconv'
make install
unset MAILCHECK 屏蔽mail 提醒
zabbix 安装
yum install net-snmp-devel
./configure --prefix=/data/app/zabbix --enable-server \
--enable-agent--with-mysql--with-net-snmp--with-libcurl--with-libxml2
ln -s /data/app/mysql/lib/* /usr/lib
nmap -p0-65535 133.193.15.33 扫描开放端口
nmap -sP 133.192.68.0/24 扫描存活主机
time_wait 过多
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_fin_timeout = 30
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' #查看连接数
ps -p PID -o lstart #查看进程启动时间
grep -r --include="*.java" studentinfo . #根据后缀名搜索
awk '{print NF;exit}' #查看文件有多少列
grep -oP '(\d{1,3}\.?){4}' #提取文本中的ip地址
awk '!a[$0]++' file #删除重复行
unset HISTFILE #执行之后,以后的bash记录不会记录到history里面
awk 'BEGIN { cmd="cp -ir /www/web/* ."; print "n" |cmd; }'#批量复制一些文件但不覆盖已经存在的文件或者文件夹
ls | awk '{ print "tar zcvf "$0".tgz " $0|"/bin/bash" }' #将当前目录下每个文件夹和文件各自压缩
alias survey="history |awk '{a[\$2]++} END{for(i in a){printf \"%5d\t%s \n\",a[i],i}}'|sort -rn|head"
alias df="df -h -P --total --exclude-type=devtmpfs 2>/dev/null"
alias psmem='ps -eo pid,vsz,comm |sed -e 1d | sort -k2 -nr | awk '"'"'{a=$2; if ($2>0) {print $1, $2/8/1024, "MB", $3}}'"'"
ps -e -o ppid,stat | grep Z | cut -d ' ' -f1 | xargs kill -9 #杀死僵尸进程
wget -xnH -i test.txt #带目录下载文本中的链接
shopt -s extglob # 启用!命令,可以用 mv !(backup) * backup 移动当前除backup文件夹以为的文件到backup文件夹
ls | grep -v abc | xargs -i rm -rf {}   #反向删除 带abc 之外的文件
tar cvf xxx.tar -T 1.list #按照列表中的文件信息打包
jar uvf webf.jar appconfig.xml #更新jar包中的文件
du -h --max-depth=1 #统计当前目录下各目录的大小
%s/a/w/g      #vi下面批量替换 把a 批量缓存w 在:模式下
tar -tvf  #可以看tar包中的文件 不用解压.
tar czf web.tgz * --exclude old --exclude fonts #压缩当前文件和文件夹 排除 old 和fonts 文件夹
\cp rf *  /usr/local/apache/htdocs  #复制当前所有文件和文件夹到htdocs
pkill -9 -t pts/3  # 结束tty 3的 会话
ll | grep ^d |awk '{print $9}'|xargs -i rm -rf {} #删除当前目录下的文件夹
set nonu #vi 取消行号
ll -i #查询乱码文件的inode号
find . -inum 1059245|xargs -i  mv {} logo.png #改名
find . -inum 1059245 -exec mv {} 1.txt \; #上面的有时候不行,可以换换这个
vi + /etc/profile
PATH=$PATH:/usr/local/apache/bin
source /etc/profile
#把apache加入系统变量
#Error: Package: glibc-headers gcc make的装不上
vi /etc/yum.conf
把exclude=kernel*注释掉
echo ulimit -n 65535 >>/etc/profile #修改最大文件打开数 临时增加 下面的是永久增加需要重启
cat >> /etc/security/limits.conf <<EOF
* soft nproc 65535
* hard nproc 65535
* soft nofile 65535
* hard nofile 65535
EOF
find /data/mysql_backup/ -ctime +5 | xargs -i rm -rf {} #删除当前文件夹下5天前的文件夹和文件
watch -n 1 date #动态显示当前系统时间
arping 192.168.1.33 #检测有没有和自己ip冲突的机器.
netstat -na|grep ESTABLISHED| grep :80 | wc -l #查询已经建立连接的80端口的连接数
ls -lSh /www/web/*.jpg |head #找出目录下最大的文件
vim 下批量注释
按v 进入 可视 模式 选好要注释的行,然后按 ctrl+v 进入 可视 块 模式,然后按 大写的 I 输入 #号 再按两下esc键 就可以了
删除注释:在 可视 块 模式下 选择第一列的# 按d删除
:50,70 s/^/#   #vi 下面 注释50~70行
 find . -type d -perm 700 -exec ls -ld {} \;#找出当前目录下有写权限的目录.
zip -q -r laomm.zip * -x *.MP3 ./upload/* #压缩当前文件夹下面的文件但排除mp3文件和upload 文件夹.
jar -uf cctv.jar system.cfg #更新架包下面一个文件.
dstat -nf #查看网卡即时流量
echo 3 > /proc/sys/vm/drop_caches #手工释放内存
#端口转发
iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 31521 -j DNAT --to 远程ip:1521
iptables -t nat -A POSTROUTING -j MASQUERADE
#!/bin/bash
size=1883954if[ $size -ge 1048576]then
    size=$(awk 'BEGIN {printf "%.2f",'$size'/1048576}')M
elif[ $size -ge 1024]then
    size=$(awk 'BEGIN {printf "%.2f",'$size'/1024}')K
fi
echo $size
linux 换算大小
本文由作者按照 CC BY 4.0 进行授权