1.linux网络验证
1.1网络链路追踪
linux: traceroute 127.0.0.1
windowns: tracert 127.0.0.1
1.2模拟发送报文
1.2.1 telnet
发送socket报文:
telnet 127.0.0.1 8080
000261<txcode>0800</txcode><req><txcode>0800</txcode><merchantno>000000</merchantno><txdate>20190509</txdate><txtime>14:15:00</txtime><traceno>40000000000051650100</traceno><termid>0000000000000000000</termid></req>
发送http报文:
telnet 127.0.0.1 8080
POST /AbcService.svc HTTP/1.1
Host: 103.83.44.81:83
Content-Type: text/xml; charset=utf-8
Content-Length: 930
Pragma: no-cache

长度为930的httpbody内容

1.2.2curl
curl -d "httpbody内容" "http://127.0.0.1:8080/txn/icbc"
curl -d "aaaaaaaaaa" -H "Content-Length:10" "http://127.0.0.1:8080/txn/icbc"
curl https://127.0.0.1:8080/txn/icbc -X POST -d "httpbody内容"

1.2.3wget
#请求和返回报文以文件形式
wget -d --output-document="txncontent.rsp" --post-file="txncontent.req" "http://127.0.0.1:2800"
#从微信下载文件
wget -O /apps/txnapp/tmpfile/response.txt -q --no-check-certificate https://api.mch.weixin.qq.com/pay/downloadbill --post-data="<xml><appid>wxc0000db808e00000</appid><bill_date>20190129</bill_date><bill_type>ALL</bill_type><mch_id>1381027002</mch_id><nonce_str>201943301548841391</nonce_str><sign>89A9A12624578C4D8235923CD481F8AE</sign></xml>"

2.查看文本内容
grep searchStr /*.xml -nr
zgrep "23" *.gz,查看压缩文件内容

3.解压缩
3.1tar将指定目录或文件压缩到指定文件
tar czvf test.tar.gz 1234.txt,将1234.txt目录压缩到test.tar.gz,
3.2tar解压命令
tar zxvf test.tar.gz -C ./将test.tar.gz解压到指定目录:tar zxvf test.tgz -C 指定目录

3.3压缩文件成gz文件
gzip test.c > test.gz,压缩为.gz 文件源文件会消失
gzip -c test.c > test.gz,保留源文件压缩
3.4压缩目录成gz文件
gzip -r 2test > 2test.gz,不保留源文件
gzip -c -r 2test > 2test.gz,保留源文件

3.5解压
gzip -d test.gz

4.查看linux内核
命令1:getconf LONG_BIT
结果:64

命令2:uname -a
结果:Linux Test004MUJUP 2.6.32-431.23.3.el6.x86_64 #1 SMP Wed Jul 16 06:12:23 EDT 2014 x86_64 x86_64 x86_64 GNU/Linux

命令3:uname -r
结果:2.6.32-431.23.3.el6.x86_64

命令4:cat /proc/version
结果:Linux version 2.6.32-431.23.3.el6.x86_64 (mockbuild@x86-027.build.eng.bos.redhat.com) (gcc version 4.4.7 20120313 (Red Hat 4.4.7-4) (GCC) ) #1 SMP Wed Jul 16 06:12:23 EDT 2014

5.查看进程
5.1根据进程名称查看进程
用ps命令查看进程ID:
ps -ef | grep tomcat
deployop 31894 31892 0 Oct28 ? 00:00:04 ./bin/start.sh tomcat
31894为进程ID,后面是启动路径和对应的进程名

5.3已经知道进程的确切名称,可以用pidof查看:
pidof Name
不过这个一般少用,因为真的很难查

5.2对于在Java虚拟机中运行的进程,比如tomcat的守护进程,可以直接用jsp命令查看:
jps -l | grep zookeeper
10997 org.apache.zookeeper.server.quorum.QuorumPeerMain

5.3查到进程ID之后,使用netstat命令查看其占用的端口
netstat -anp | grep 10997
tcp6 0 0 :::43125 :::* LISTEN 10997/java
tcp6 0 0 :::2181 :::* LISTEN 10997/java

5.4杀死进程
杀死所有同名进程,killall -9 transmitsvr
杀死单个进程,kill -s 9 31894

向进程发送指定信号,killall -TERM ngixn  或者  killall -KILL nginx

6.查找文件
6.1在某个路径下查文件
在/etc下查找“.log”的文件,find /etc -name “.log”
6.2列出某个路径下所有文件,包括子目录,find /etc -name “
6.3在某个路径下查找所有包含“hello abcserver”字符串的文件,
find /etc -name “
” | xargs grep “hello abcserver”,
或者find /etc -name “*” | xargs grep “hello abcserver” > ./cqtest.txt

6.4查找大文件
find . -type f -size +800M,仅仅能看到超过800M大小的文件的文件名称
find . -type f -size +800M  -print0 | xargs -0 ls -l,详细显示一些文件属性或信息呢
find . -type f -size +800M  -print0 | xargs -0 du -h,查找超过800M大小文件,并显示查找出来文件的具体大小,可以使用下面命令
find . -type f -size +800M  -print0 | xargs -0 du -h | sort -nr,查找结果按照文件大小做一个排序,那么可以使用下面命令

7.创建路径
mkdir -p 2test/test1/test2

8.linux常用快捷键
1、tab //命令或路径等的补全键,linux用的最多的一个快捷键

2、ctrl+a //光标迅速回到行首

3、ctrl+e //光标迅速回到行尾

4、ctrl+f //光标向右移动一个字符

5、ctrl+b //光标向左移动一个字符

6、ctrl+insert //复制命令行内容(mac系统不能使用)

7、shift+insert //粘贴命令行内容(mac系统不能使用)

8、ctrl+k //剪切(删除)光标处到行尾的所有字符

9、ctrl+u //剪切(删除)光标处到行首的所有字符

10、ctrl+w //剪切(删除)光标前的一个字符

11、ctrl+y //粘贴 ctrl+k、ctrl+u、ctrl+w删除的字符

12、ctrl+c //中断终端正在执行的任务并开启一个新的一行

13、ctrl+h //删除光标前的一个字符(相当于退格键)

14、ctrl+d //退出当前shell命令行,如果是切换过来的用户,则执行这个命令回退到原用户

15、ctrl+r //搜索命令行使用过的历史命令记录

16、ctrl+g //从ctrl+r的搜索历史命令模式中退出

17、ctrl+l //清楚屏幕所有的内容,并开启一个新的一行

18、ctrl+s //锁定终端,使之任何人无法输入

19、ctrl+q //解锁ctrl+s的锁定状态

20、ctrl+z //暂停在终端运行的任务,使用"fg"命令可以使暂停恢复

21、!! //执行上一条命令

22、!pw //这是一个例子,是执行以pw开头的命令,这里的pw可以换成任何已经执行过的字符

23、!pw:p //这是一个例子,是仅打印以pw开头的命令,但不执行,最后的那个“p”是命令固定字符

24、!num //执行历史命令列表的第num条命令,num代指任何数字(前提是历史命令里必须存在)

25、!$ //代指上一条命令的最后一个参数,该命令常用于shell脚本中

26、esc+. //注意那个".“ 意思是获取上一条命令的(以空格为分隔符)最后的部分

27、esc+b //移动到当前单词的开头

28、esc+f //移动到当前单词的结尾

    29、cd - 切换到上次使用目录

9.sftp登录
#执行指定的脚本
sftp_cmd=ftpremotepath_put
lcd filename
bye" > $sftp_cmd
sftp -oPort=22-oPassword=dSPwd@12*8 -S /bin/ssh_i386 -b /tmp/autosftp.16620 testuser@127.0.0.1 > /applogs/sftp16620.log 2>&1

指定免密登录的私钥

sftp -oIdentityFile=/app/cert/hsbcsftp_rsa/hsbc_rsa_stg_20190415 -oPort=10022 testuser@127.0.0.1
#生成免密登录的公私钥对
ssh-keygen -t rsa -f ./ssh_login_key -C "免密登录RSA2048秘钥对"

调用方法

sftpfile()
{
if [ pass_enc = y ]
then
javaCmd="/bin/jdk1.8/bin/java"
jarLib="/app/lib/"
result=`jarLib -jar ftppwd`
ftppwd=( echo 2}')
if [ -z ftpip 默认端口22"
else
echo "ip=sftp_port"
fi
expect <<eof> sftp_port ftpip
expect {
"(yes/no)?" {send "yes\r";exp_continue}
"assword:" {send "ftpremotepath\r"
expect "sftp> "
send "cd path\r"
expect "sftp> "
send "filename\r"
expect "sftp> "
send "ls type = get ]
then
result=`grep -E -c "Fetching" LOGPATH/ftp$LOGPATH/ftp$result -lt 1 ]&&[ $flag -gt 0 ]
then
return 1
fi
return 0
}</eof>

10.免密登录
10.1生成sftp免密登录证书
ssh-keygen -t rsa
10.2服务端配置
1、登录机器(请替换sftp账号和密码为自己的)[密码123456]:ssh cmbsftp@localhost
2、切换到ssh配置目录:cd .ssh
3、备份原配置文件(日期请改为变更当日日期):cp authorized_keys authorized_keys.bak20161123
4、将对方公钥文件waibu_id_dsa.pub(名称不一定是这个)的内容追加到authorized_keys中:cat waibu_id_dsa.pub >> ./authorized_keys

11硬盘使用情况
11.1统计磁盘整体情况,包括磁盘大小,已使用,可用。命令“df”
du -sh /usr/ #查看指定目录
df -lh #命令会更清楚磁盘使用情况
df -h #统计每个目录下磁盘的整体情况
df -h /usr/ 指定目录
df -a #全部的文件系统的使用情况
df -i #显示inode信息
df -k #以字节数显示区块占用情况
du --max-depth=1 -h #查看当前目录每个文件夹的情况
du --max-depth=1 -h /usr/ #指定目录,只要在命令后直接根目录名
du -a | sort -n -r | head -n 10

12.查看操作系统位数
getconf LONG_BIT
uname -a
13.查看操作系统启动时间
who -b 查看最后一次系统启动的时间。
who -r 查看当前系统运行时间
last reboot
top命令查看,up后表示系统到目前运行了多久时间。反过来推算系统重启时间
uptime 命令查看