LinuxAIX常用命令(学会即上岗)
目录
基础命令
环境变量
找到占用端口的进程
AIX
Linux
AIX系统命令
win快捷命令
grep命令
tar 解压缩
Linux系统(常用)
AIX系统解压缩
zip命令
jar命令
压缩
解压
vim
cics
mq
Ansible 自动化运维
查看日志
查找文件中的关键字
查看某一时间段的日志
精确查询
模糊查询
结合grep查询
导出日志
linux其他
以后台模式运行脚本
备份与恢复oracle数据库
(一)指定表
1、备份指定表
2、恢复指定表数据
(二)整个数据库
基础命令
df 查看磁盘空间
ls -al 显示所有文件
ls -ltr 按照时间顺序排列
passwd 修改当前用户的密码
find . -name log4j.xml 查找当前目录及其子目录下的log4j.xml文件
find . -name *log.20* |xargs rm 找到含有log.20的文件并删除
tail –n 20 文件名 查看文件的最后20行mkdir –p /shareoibs/receive/udp/chrm 创建多层目录
find . -mtime +3 -name '*.log' -exec rm -rf {} \; 删除3天前的log文件find . -mtime +3 -name "**.log*"|xargs rm -rf;
scp sql_BIBP-OIBS_V01.6F_B15.sh oibspl@22.188.35.163:/oibspl/ywx/Version_F/sql_install 将本机上的文件传送到另一台服务器器上去
ls -l|grep oibs 列举包含oibs字符串的文件夹
查看当前目录的子目录占用空间
Linux du -sh ./*
AIX du -sg ./*
find . -name ‘*20*’ -exec rm -f {} \; (引号是英文的) 从当前目录找到name包含20的文件执行rm -f命令
使用-exec参数必须使用分号结尾
因为;在bash环境中有特殊意义,所以用\来转义
find . –mtime +30 -name ‘*20*’ -exec rm -f {} \; 删除所有30天前的带20的文件
ls -l --fulltime 查看文件具体时间,精确到秒
top 实时查看内存
free 查看此时的内存
cat -n netmap.cfg |grep 22.188.182.150 查找文件里面的ip地址
tail –n 20 文件名 查看文件的最后20行
查找所有日志中的关键词
find ./ -name "log1Bii_cust1.*"|xargs grep "a116146637" |wc -l
查找关键词并统计行数
cat log1Bii_cust1.2018-12-23-11|grep "a116146637"|wc -lrm -f !(A) 保留A,删除其他
rm -f !(A|B) 保留A B,删除其他ls |grep -v A |xargs rm -f 保留A,删除其他
查看cpu个数
lscpu
查看内存大小
free
环境变量
env或者printenv查看系统全局环境变量
cat .bash_profile 查看当前用户的环境变量当你登录Linux系统时,bash shell会作为登录shell启动。登录shell会从5个不同的启动文件里
读取命令:
/etc/profile
$HOME/.bash_profile
$HOME/.bashrc
$HOME/.bash_login
$HOME/.profile
/etc/profile文件是系统上默认的bash shell的主启动文件。系统上的每个用户登录时都会执行
这个启动文件。
用途一:自定义命令
在.bash_profile文件里面增加以下
alias l='ls -l'
alias ll='ls -lrt'
alias dir='ls -la'
alias war='cd /was/IBM/WebSphere/AppServer/profiles/Custom01/installedApps/T1RBOCNETAP01Cell01'即可使用自定义命令l、ll、dir、war
找到占用端口的进程
AIX
netstat -Aan |grep 13579 //获取 f1000e000554bbb8
f1000e000554bbb8 tcp4 2723 0 22.188.137.93.13578 22.188.152.43.34300 CLOSE_WAIT
rmsock f1000e0005548bb8 tcpcb //获取进程号 23462056 udp 用日
the socket 0xf1000e0005548808 is being held by proccess 23462056 (CmoFrSock).
ps -ef|grep 23462056 //也可以直接kill掉进程
Linux
netstat -tunp |grep 22
ps -aux|grep 22netstat -apn | grep 22
netstat -apn
Win
Win查看端口占用
netstat -ano | findstr “1099” 查出进程ID
tasklist | findstr “10136” 根据进程ID查出属于哪个进程
taskkill /pid 10136 -f 强杀进程
AIX系统命令
uname 查看系统名称
df -gt 查看磁盘文件系统
ESC+k 查看上一条命令
ESC+j 查看下一条命令
Ctrl+c 退出当前执行的命令,中断程序的执行
Ctrl+d 退出当前用户
win快捷命令
alt+tab 切换到上一个窗口
win+tab 显示所有窗口
grep命令
grep -i
grep -v查看Oracle的home路径 、Oracle版本
echo $ORACLE_HOME
which oracle
查看java home路径 、java版本
echo $JAVA_HOME
which java这种都可以用 echo $LANG 打印出来
#4.客户化ORACLE_HOME、LIBPATH 、PATH、NLS_LANG、LANG
export ORACLE_HOME=/oracle/app/oracle/product/11.2.0/db
export LIBPATH=$LIBPATH:/oracle/cli32/lib32:/oracle/product/11g/rdbms/precomp/public
export PATH=$PATH:/oracle/product/11g/rdbms/precomp/public:/oracle/product/11g/rdbms/bin
export NLS_LANG=American_America.AL32UTF8
export LANG=zh_CN.UTF-8chage -l ipps 查看ipps用户密码有效期的信息
tar 解压缩
-c(或--create)是创建文件的意思,解压的时候不需要创建新文件,所以不需要加c
-v(或--verbose)是查看详细信息,显示执行过程。如果不想看,可以不用加
-f(或--file)是用于指定生成的文件名
-x(或--extract)是从压缩文件中还原原文件,也就是解压
-t(或--list)列出文件内容
-z 压缩成.gz文件
-J 压缩成.xz文件
-j 压缩成.bz2文件
-可以省略
总结:
Linux系统(常用)
解压缩成.tar文件
tar -cvf test.tar test/ test2/ 压缩成tar文件
tar -tvf test.tar 查看文件列表
tar -xvf test.tar -C hhh 解压到指定目录hhh。不加-C默认解压到当前目录
解压缩成.gz文件
tar -zcvf test1.tar.gz test/ test2/ 压缩成gz文件
tar -tvf test1.tar.gz 查看文件列表
tar -zxvf test1.tar.gz -C hhh 解压到指定目录hhh
解压缩成.xz文件 (强烈推荐!)
tar -Jcvf log.tar.xz *.log 将所有log文件压缩成xz文件 注:大写的J
tar -tvf log.tar.xz 预览xz文件列表
tar -Jxvf log.tar.xz -C hhh/hh 解压到指定目录hhh/hh
压缩大小对比
-rw-r--r-- 1 vapsfc vapsfc 5130240 Dec 2 10:20 test.tar
-rw-r--r-- 1 vapsfc vapsfc 1703916 Dec 2 10:36 test1.tar.gz
-rw-r--r-- 1 vapsfc vapsfc 1194652 Dec 2 10:40 test2.tar.xz
从压缩后的文件大小来看,xz格式压缩率最好
打包和压缩不一样,打包只是将文件整合在一起,并不会压缩
打包tar
压缩,调用gzip
AIX系统解压缩
tar -cvf test.tar teIXst/ test2/ 压缩成tar文件
tar -tvf test.tar 查看文件列表
tar -xvf test.tar -C hhh 解压到指定目录hhh。不加-C默认解压到当前目录tar -cvf - 需要备份的文件夹名 | gzip > test.tar.gz 压缩成test.tar.gz文件 -和需要备份的文件夹名之间有空格
gunzip -c test1.tar.gz | tar -xvf - -C hh 解压到hh文件夹
zip命令
(常见于win系统,linux也能用)
zip test.zip test.txt 压缩文件
zip -r test.zip ./test 压缩目录,将当前目录下的test目录压缩成test.zip文件unzip test.zip 解压到当前目录
unzip -d /temp test.zip 解压到/temp目录
unzip -o test.zip 解压并覆盖原文件
unzip -n test.zip 解压并不覆盖原文件
unzip -l test.zip 查看zip文件内容
unzip -t test.zip 检查zip文件是否损坏
-rw-r----- 1 bocnet bocnet 111192141 Dec 02 15:17 test.zip
-rw-r----- 1 bocnet bocnet 94892817 Dec 02 15:19 test1.tar.gz
-rw-r----- 1 bocnet bocnet 185077760 Dec 02 15:20 test2.tar
jar命令
压缩
jar -cvfM0 igtb-web-cas.war -C /igtb/app_bak/rework/igtb-web-cas
解压
jar -xvf /igtb/app_bak/rework/igtb-web-cas/igtb-web-cas.war
jar -xvf OIBS_PAY.war 解压OIBS_PAY.war到当前目录
jar -cvfM0 OIBS_PAY.war . 将当前目录所有文件压缩成OIBS_PAY.war
vim
VIM编辑器的使用
命令状态下:(按ESC)
R 替换
dd 删除一行
O 在前面增加一行
o 在后面增加一行shift insert
清空所有内容 :%d
编辑状态下(按i)
去^M:
vi状态下使用正则表达式替换
%s/^M//g ^要用ctrl+V M用Ctrl+M 代替
cics
cicsmgr –v stop region OIBSIE
cics:cicsmgr stop OIBSIE
cicsmgr –v stop region OIBSIE乱码 export LANG=UTF-8
冷启动 cicsmgr -v start region OIBSAL StartType=cold
cicsmgr –v stop region OIBSIE
mq
概念与对象:
消息、队列、队列管理器、通道是 MQ 中最重要的概念和对象。
1、 消息是 WebSphere MQ 中最小的概念,本质上就是一段数据,它能被一个或多个应用 程序所理解,是应用程序之间传递的信息载体。消息可以大致分成两部分: 应用数据体和 消息数据头。
2、 队列
我们可以简单地把队列看成一个容器,用于存放消息。队列按其定义可分成本地队列、 远程队列定义、别名队列定义、模型队列定义。远程队列定义和别名队列定义只是一个队列定义,指向另一个队列实体。远程队列定义指向的是其它队列管理器中的队列,而别名队列指向的是本地队列管理器中的队列。
用mqm用户登录mq服务器
mqm/Mima-001
dspmq
runmqsc IPPS_CTIS_PSN
dis chs(*)
reset CHANNEL(IPPS.TO.CTIS.CHL)
start CHANNEL(IPPS.TO.CTIS.CHL)
dis chl(*)
end 退出
dis chs(IPPS.TO.CTIS.CHL) all
reset chl(IPPS.TO.CTISP.CHL)
dis listener(*)
dis LISTENER(SYSTEM.DEFAULT.LISTENER.TCP)
dis LISTENER(IPPS_CTIS_LSR_PSN)
验证连通性:
cd /opt/mqm/samp/bin ./amqsput ./amqsget
./amqsget QR_IPPS_CTIS_ENT IPPS_CTIS_ENT
重置通道 stop reset start
网关:
节点:
通道:
如果程序连接时爆出2035错误,则可以做如下修改
**ALTER QMGR CHLAUTH(DISABLED)**
**ALTER QMGR CONNAUTH(')**
**REFRESH SECURITY TYPE(CONNAUTH)**
Ansible 自动化运维
ansible -i iv_oibs "~.*oibs" -m raw -a "pwd"
ssh-keygen -q -m PEM -t rsa -b 4096 -f ~/.ssh/id_rsassh-keygen -q -m PEM -t rsa -b 4096 -C 'bocop-sap-dev0' -f sshkey/bocop-sap-dev0-id_rsa
两次回车cp /opt/ansible/playbook/pb-keyop.yml ./
ansible-playbook -i iv_sap -e 'hosts=all dev=true' pb-keyop.yml
aix机器只能只用raw模块,其他用不了
ansible -i iv_bocnet "aix" -m raw -a "pwd" 可以
ansible -i iv_bocnet "aix" -m shell -a "pwd" 不行
ansible-playbook -i iv_bocnet pb-df.yml
ywx9031@7236326b328e:~/ansible/BOCNET-G-IFS$ more pb-df.yml
- hosts: x86gather_facts: Falsetasks:- name: start check scriptshell: ". ~/.bash_profile && df $HOME "register: rs- debug: var=rs.stdout_lines- hosts: allgather_facts: Falsetasks:- name: start check scriptraw: "df /bocnet "register: rs- debug: var=rs.stdout_lines- hosts: aix:x86gather_facts: Falsetasks:- name: start check scriptraw: "df /bocnet "register: rs- debug: var=rs.stdout_lines
ansible -i iv_ipps ipps@22.188.79.204 -m shell -a "touch test.txt" 操作一个ip地址
ipps@22.188.79.204 ansible_ssh_host=22.188.79.204 ansible_ssh_user=ipps ansible_ssh_pass=Mima_002
grep 'ssh_host22' iv_* 搜索iv开头的文件中带有ssh_host22字符的
注意:
ansible调用脚本如果只能停止,不能启动,需要sleep几秒钟
ansible -i iv_bocnet bocnet@22.188.129.200 -m raw -a 'cd bocnetAuto;pwd;sh ./startup_salary.sh;sleep 10'
-rwxr-xr-x 1 ywx9031 ansible 48987 May 11 15:26 iv_ipps_k_p*
-rwxr-xr-x 1 ywx9031 ansible 49109 May 11 16:02 iv_ipps_k_p*
一小时
自动shell脚本
---
ssh sap@22.87.101.237
sed s/oibssg/yyyyyyyyyyyyyyyyyyyyyyyyyyyyyy/g ./log4j.xml > new_log4j.xml 将log4j.xml文件中的oibssg改成yyyyyyyyyyyyyyyyyyyyyyyy,并生成到新的文件new_log4j.xml,不能直接程程到原文件
find –name 'log4j.xml' |xargs perl –pi –e 's|被替换的字符串|替换后的字符串|g'
去掉结尾的 ^M
sed 's/\^M$//g' aa.txt
sed s/oibsde/yyyyyyyyyyyyyyyyyyyyyyyyyyyyyy/g ./CD.CONF
sed s/${owner}/yyyyyyyyyyyyyyyyyyyyyyyyyyyyyy/g ./CD.CONF
cat CD.CONF|grep 'owner='|cut -c 10-
#以=为分隔符,取后面的一部分显示
oldvar=`cat CD.CONF|grep 'owner='|cut -d '=' -f2`
sed s/$oldvar/yiwenxinyiwenxin/g ./CD.CONF > new_CD.CONF
mv new_CD.CONF CD.CONF
sed -i本来可以直接修改文件内容,但是aix不支持
oldvar=$(cat CD.CONF|grep 'owner='|cut -d '=' -f2)
send "echo $oldvar\r"
send "sed s/$(cat CD.CONF|grep 'owner='|cut -d '=' -f2)/$bank/g ./CD.CONF > new_CD.CONF\r"
sed s/$(echo|cat CD.CONF|grep 'owner='|cut -d '=' -f2)/yyyyyyyyyyyyyyyyyyyyyy/g ./CD.CONF > new_CD.CONF
写好的sh脚本采用自动格上传,不要二进制
was_BackstageScript_Install
#send "sed s/$(echo|cat CD.CONF|grep 'owner='|cut -d '=' -f2)/$bank/g ./CD.CONF > new_CD.CONF \r"
#send "mv new_CD.CONF CD.CONF\r"
send "sed s/$(cat /shareoibs/$bank/oibszpay_share_dir/Web/channel/CD/Config/CD.CONF|grep 'owner='|cut -d '=' -f2)/$bank/g /shareoibs/$bank/oibszpay_share_dir/Web/channel/CD/Config/CD.CONF > new_CD.CONF && mv new_CD.CONF CD.CONF \r"
查看日志
查找文件中的关键字
1、vim打开,命令行模式,输入 /关键字
2、cat test.log |grep ERROR 查看当前目录下test.log文件中的ERROR关键字
3、grep -r ERROR 文件名或目录名 递归查找某目录下的所有文件包含ERROR关键字
显示ERROR报错的上下文
cat 文件名 | grep -C 20 '关键字' 显示文件里匹配的关键字的上下20行
查看某一时间段的日志
精确查询
sed -n '/2024-04-10 22:16:21/,/2024-05-10 22:16:21/p' Portal.log
两个时间点必须存在,否则查不到
模糊查询
sed -n '/2024-04-10 22:10:*/,/2024-05-10 22:16:*/p' Portal.log 查询22:10到22:16之间的日志
sed -n '/2024-04-10 22*/,/2024-05-10 23*/p' Portal.log 查询22到23点之间的日志
结合grep查询
查询某个日志的某个时间段,带有POST的日志行
sed -n '/2024-04-10 22:16:21/,/2024-05-10 22:16:21/p' Portal.log |grep POST
导出日志
sed -n '/2024-04-10 22:16:21/,/2024-05-10 22:16:21/p' Portal.log |grep POST > hh.log
linux其他
cat /etc/group 查看属组
`rpc:x:32:
rpcuser:x:29:
nfsnobody:x:65534:
ipps:x:1010:
mqm:x:5001:root,ipps
moniftp:x:5002:`/etc/group文件有4个字段:
分别是组名、组密码、组ID、属于该组的用户列表
Linux中,权限分为3种
r:读,4
w:写,2
x:执行,1
777权限:(4+2+1)(4+2+1)(4+2+1),可读可写可执行,最高权限
第一个7:文件属主(拥有者)可读可写可执行
第二个7:属组成员(所属组)可读可写可执行
第三个7:其他用户(组外)可读可写可执行
以后台模式运行脚本
./test.sh &
在非控制台下运行脚本
nohup ./test.sh & 关闭窗口不影响
jobs -l 查看正在运行的后台任务
./test10.sh > test10.out & 将打印内容输出到test10.out文件中,不在屏幕上显示
ps -ef
第一列:UID,用户
第二列:进程ID
第三列:父进程ID
UID:启动这些进程的用户。
PID:进程的进程ID。
PPID:父进程的进程号(如果该进程是由另一个进程启动的)。
C:进程生命周期中的CPU利用率。
STIME:进程启动时的系统时间。
TTY:进程启动时的终端设备。
TIME:运行进程需要的累计CPU时间。
CMD:启动的程序名称。
备份与恢复oracle数据库
(一)指定表
1、备份指定表
expdp user/passwd@orcl tables=table1,table2 dumpfile=expdp.dmp directory=data_dir logfile=expdp.log
例如:
exp evens/mima_002
tables=daily_clean_task
file=/evens/tmp/expdmp/BOCNET_T1_daily_clean_task_20220427.dmp log=EVENS_T1_daily_clean_task_20220427.log
2、恢复指定表数据
imp evens/mima_002 file=/evens/tmp/expdmp/BOCNET_T1_daily_clean_task_20220427.dmp log=/evens/tmp/expdmp/imp_BOCNET_T1_daily_clean_task_20220429.log full=Y ignore=Y
注:full=y 是导入文件中全部内容
ignore=y相当于,如果没有的表,创建并导入数据,如果已经有的表,忽略创建的,但不忽略导入
(二)整个数据库
1、数据量很大
# 导出命令
expdp evens/pwd_002 directory=dmp_dir dumpfile=T1_evens_$DATE.%U.dmp logfile=T1_evens_$DATE.log PARALLEL=4 cluster=N#导入命令
impdp evens/pwd_002 directory=dmp_dir parallel=4 dumpfile=T1_evens_20220221.01.dmp,T1_evens_20220221.02.dmp,T1_evens20220221.03.dmp,T1_evens_20220221.04.dmp logfile=imp_evens_20220221.log exclude=statistics cluster=N
2、数据量较小
# 导出命令
exp props/mima_002 file=/evens/tmp/expdmp/EVENS_T1_PROPS_$DATE.dmp log=/evens/tmp/expdmp/EVENS_T1_PROPS_$DATE.logexp ticket/mima_002 file=/evens/tmp/expdmp/EVENS_T1_TICKET_$DATE.dmp log=/evens/tmp/expdmp/EVENS_T1_TICKET_$DATE.log# 导入命令
imp props/mima_002 file=/evens/tmp/expdmp/EVENS_T1_PROPS_20220221.dmp log=/evens/tmp/expdmp/imp_props_20220221.log full=Yimp ticket/mima_002 file=/evens/tmp/expdmp/EVENS_T1_TICKET_20220221.dmp log=/evens/tmp/expdmp/mp_TICKET_20220221.log full=Y
重启nginx
Linux:
sudo -u nginx /bin/vim /nginx/conf/nginx.conf
/nginx/sbin/nginx -s reload
Windows CMD:
start nginx.exe
nginx.exe -s stop
重新载入 nginx.exe -s reload
Windows PowerShell:
start nginx
Linux系统使用root用户新建应用用户
添加evens用户,指定主目录
useradd -d /evens/ -m evens
设置密码
passwd evens
# 赋予sudo权限
chmod u+w /etc/sudoers
vim /etc/sudoers (或者直接用命令visudo)
找到以下位置
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
添加
evens ALL=(ALL) ALL
evens ALL=(ALL) NOPASSWD:ALL(设置不需要密码)
# 加入root组
usermod -g root evens
后台执行SQL并输出到日志文件
登录后台,执行命令登录数据库
mysql -h 22.222.22.22 -P 15511 -uevens -pNmSql#2022!
进入数据库后,先输入
tee /evens/log/mysql.log (文件不存在的话会自动创建)
输入SQL命令
比如 show databases等等,都会记录到日志文件中
当你不想再记录日志时,可以用notee命令,之后的操作将不会写入日志文件。
也可以执行脚本持续输出日志
source test.sql;