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<?xml version="1.0" encoding="GB2312"?><Head><TxCode>0800</TxCode></Head><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=$WORKDIR"/tmp/autosftp."$$
echo "cd $ftpremotepath_put
lcd $path
-put $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 -o $pass_enc = y ]
then
javaCmd="/bin/jdk1.8/bin/java"
jarLib="/app/lib/"
result=`$javaCmd -cp $jarLib -jar $jarLib"/PWDAES.jar" $ftppwd`
ftppwd=$result
fi
sftp_port=$( echo $ftpip | awk -F: '{ print $2}')
if [ -z $sftp_port ]
then
sftp_port="22"
echo "ip=$ftpip 默认端口22"
else
echo "ip=$ftpip 端口$sftp_port"
fi
expect <<EOF > $LOGPATH/ftp$$.log
set timeout 1000
spawn sftp -oPort=$sftp_port $ftpuser@$ftpip
expect {
"(yes/no)?" {send "yes\r";exp_continue}
"assword:" {send "$ftppwd\r"}
}
expect "sftp> "
send "mkdir $ftpremotepath\r"
expect "sftp> "
send "cd $ftpremotepath\r"
expect "sftp> "
send "lcd $path\r"
expect "sftp> "
send "$type $filename\r"
expect "sftp> "
send "ls $filename\r"
expect "sftp> "
send "exit\r"
expect eof
EOF
if [ $type = get ]
then
result=`grep -E -c "Fetching" $LOGPATH/ftp$$.log`
flag=0
else
result=`grep -E -c "Uploading" $LOGPATH/ftp$$.log`
flag=`grep -E -c "No such file or directory" $LOGPATH/ftp$$.log`
fi
if [ $result -lt 1 ]&&[ $flag -gt 0 ]
then
return 1
fi
return 0
}
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 命令查看
94linux环境变量设置
94.1 什么是环境变量?,环境变量是在操作系统中一个具有特定名字的对象,它包含了一个或多个应用程序将使用到的信息。Linux是一个多用户的操作系统,每个用户登录系统时都会有一个专用的运行环境,通常情况下每个用户的默认的环境都是相同的。这个默认环境就是一组环境变量的定义。每个用户都可以通过修改环境变量的方式对自己的运行环境进行配置。
94.2 环境变量怎么分类?, 根据环境变量的生命周期可分为永久性环境变量的临时性环境变量,根据设置环境变量时使用的用户等级不同分为系统级环境变量和用户级环境变量
94.3 对所有用户生效的永久性变量(系统级),这类变量对系统内的所有用户都生效,所有用户都可以使用这类变量。作用范围是整个系统。
设置方式: 用vim在/etc/profile文件中添加我们想要的环境变量。
当然,这个文件只有在root(超级用户)下才能修改。我们可以在etc目录下使用ls -l查看这个文件的用户及权限。
这里写图片描述
利用vim打开/etc/ profile文件,用export指令添加环境变量。
这里写图片描述
【注意】:添加完成后新的环境变量不会立即生效,除非你调用source /etc/profile 该文件才会生效。否则只能在下次重进此用户时才能生效。
这里写图片描述
对单一用户生效的永久性变量(用户级)
该类环境变量只对当前的用户永久生效。也就是说假如用户A设置了此类环境变量,这个环境变量只有A可以使用。而对于其他的B,C,D,E….用户等等,这个变量是不存在的。
设置方法:在用户主目录”~”下的隐藏文件 “.bash_profile”中添加自己想要的环境变量。
查看隐藏文件: ls -a或ls -al
这里写图片描述
利用vim打开文件,利用export添加环境变量。与上相同。同样注意,添加完成后新的环境变量不会立即生效,除非你调用source ./.bash_profile 该文件才会生效。否则只能在下次重进此用户时才能生效。
可以看到我在上图中用红框框住了两个文件,.bashrc和.bash_profile。原则上来说设置此类环境变量时在这两个文件任意一个里面添加都是可以的。
~/.bash_profile是交互式login方式进入bash shell运行。
~/ .bashrc是交互式non-login方式进入bash shell运行。
二者设置大致相同。通俗点说,就是.bash_profile文件只会在用户登录的时候读取一次,而.bashrc在每次打开终端进行一次新的会话时都会读取。
临时有效的环境变量(只对当前shell有效)
此类环境变量只对当前的shell有效。当我们退出登录或者关闭终端再重新打开时,这个环境变量就会消失。是临时的。
设置方法:直接使用export指令添加。
这里写图片描述
设置环境变量常用的几个指令
echo
查看显示环境变量,使用时要加上符号“”例:echoPATH
export
设置新的环境变量
export 新环境变量名=内容
例:export MYNAME=”LLZZ”
修改环境变量
修改环境变量没有指令,可以直接使用环境变量名进行修改。
例:MYNAME=”ZZLL”
env
查看所有环境变量
set
查看本地定义的所有shell变量
unset
删除一个环境变量
例 unset MYNAME
readonly
设置只读环境变量。
例:readonly MYNAME
常用的几个环境变量(一般都为大写)
PATH
指定命令的搜索路径。通过设置环境变量PATH可以让我们运行程序或指令更加方便。
echo $PATH 查看环境变量PATH。
这里写图片描述
每一个冒号都是一个路径,这些搜索路径都是一些可以找到可执行程序的目录列表。当我们输入一个指令时,shell会先检查命令是否是内部命令,不是的话会再检查这个命令是否是一个应用程序。然后shell会试着从这些搜索路径,即PATH(上图中路径)中寻找这些应用程序。如果shell在这些路径目录里没有找到可执行文件。则会报错。若找到,shell内部命令或应用程序将被分解为系统调用并传给Linux内核。
举个例子:
现在有一个c程序test.c通过gcc编译生成的可执行文件a.out(功能:输出helloworld)。我们平常执行这个a.out的时候是使用
①相对路径调用方式: ./a.out (”.”代表当前目录,”/”分隔符)。
②还可以使用绝对路径调用方式:将其全部路径写出:/home/lzk/test/a.out(此路径是我的工作目录路径,只是个例子,仅供参考)
这里写图片描述
③通过设置PATH环境变量,直接用文件名调用:
在没设置PATH前,我们直接使用a.out调用程序会报错,因为shell并没有从PATH已拥有的搜索路径目录中找到a.out这个可执行程序。
这里写图片描述
使用export指令,将a.out的路径添加到搜索路径当中,export PATH=$PATH:路径
我们就可以使用a.out直接执行程序。
这里写图片描述
HOME
指定用户的主工作目录,即为用户登录到Linux系统中时的默认目录,即“~”。
HISTSIZE
指保存历史命令记录的条数。我们输入的指令都会被系统保存下来,这个环境变量记录的就是保持指令的条数。一般为1000。
这里写图片描述
这些历史指令都被保存在用户工作主目录“~”下的隐藏文件.bash_profile中。
这里写图片描述
我们可以通过指令history来查看。
这里写图片描述
LOGNAME
指当前用户的登录名
HOSTNAME
指主机的名称。
SHELL
指当前用户用的是哪种shell
LANG/LANGUGE
和语言相关的环境变量,使用多种语言的用户可以修改此环境变量。
MAIL
指当前用户的邮件存放目录
PS1
命令提示符,root用户是#,普通用户是$
PS2
附属提示符,默认是“>”
SECONDS
从当前shell开始运行所流逝的秒数
总结
环境变量是和shell紧密相关的,用户登录系统后就启动了一个shell,对于Linux来说一般是bash(Bourne Again shell,Bourne shell(sh)的扩展),也可以切换到其他版本的shell。bash有两个基本的系统级配置文件:/etc/bashrc和/etc/profile。这些配置文件包含了两组不同的变量:shell变量和环境变量。shell变量是局部的,而环境变量是全局的。环境变量是通过shell命令来设置。设置好的环境变量又可以被所以当前用户的程序使用。
94查看、杀死进程
#查看svnserve进程
[deployop@DEV-L000963 caopeng]$ ps -ef|grep svnserve
deployop 22941 22915 0 09:04 pts/0 00:00:00 grep svnserve
#杀死进程
[deployop@DEV-L000963 caopeng]$ kill -9 22941
deployop 22941 22915 0 09:04 pts/0 00:00:00 grep svnserve
95查看linux版本
[deployop@DEV-L000963 caopeng]$uname -a
Linux DEV-L000963 2.6.32-358.el6.x86_64 #1 SMP Tue Jan 29 11:47:41 EST 2013 x86_64 x86_64 x86_64 GNU/Linux
[deployop@DEV-L000963 caopeng]$ lsb_release -a
LSB Version: :base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch
Distributor ID: RedHatEnterpriseServer
Description: Red Hat Enterprise Linux Server release 6.5 (Santiago)
Release: 6.5
Codename: Santiago
[deployop@DEV-L000963 caopeng]$ cat /etc/issue
Oracle Linux Server release 6.5
Kernel \r on an \m
96下文件的复制、移动与删除命令为:cp,mv,rm
96.1文件复制命令cp
命令格式:cp [-adfilprsu] 源文件(source) 目标文件(destination)
cp [option] source1 source2 source3 ... directory
参数说明:
-a:是指archive的意思,也说是指复制所有的目录
-d:若源文件为连接文件(link file),则复制连接文件属性而非文件本身
-f:强制(force),若有重复或其它疑问时,不会询问用户,而强制复制
-i:若目标文件(destination)已存在,在覆盖时会先询问是否真的操作
-l:建立硬连接(hard link)的连接文件,而非复制文件本身
-p:与文件的属性一起复制,而非使用默认属性
-r:递归复制,用于目录的复制操作
-s:复制成符号连接文件(symbolic link),即“快捷方式”文件
-u:若目标文件比源文件旧,更新目标文件
如将/test1目录下的file1复制到/test3目录,并将文件名改为file2,可输入以下命令:
cp /test1/file1 /test3/file2
96.2文件移动命令mv
命令格式:mv [-fiv] source destination
参数说明:
-f:force,强制直接移动而不询问
-i:若目标文件(destination)已经存在,就会询问是否覆盖
-u:若目标文件已经存在,且源文件比较新,才会更新
如将/test1目录下的file1复制到/test3 目录,并将文件名改为file2,可输入以下命令:
mv /test1/file1 /test3/file2
96.3删除
命令格式:rm [fir] 文件或目录
参数说明:
-f:强制删除
-i:交互模式,在删除前询问用户是否操作
-r:递归删除,常用在目录的删除
如删除/test目录下的file1文件,可以输入以下命令:
rm -i /test/file1
删除文件:rm filename
删除目录:rmdir pathname
删除文件或目录:rm -rf pathname | filename(慎用,目录不为空时也不提醒)
97 压缩/解压
-
tar命令
解包:tar zxvf FileName.tar
打包:tar czvf FileName.tar DirName
-
gz命令,没有压缩目录命令
解压1:gunzip FileName.gz
解压2:gzip -d FileName.gz
压缩:gzip FileName.tar.gz 和 .tgz
解压:tar zxvf FileName.tar.gz
压缩:tar zcvf FileName.tar.gz DirName
压缩多个文件:tar zcvf FileName.tar.gz DirName1 DirName2 DirName3 ...
-
bz2命令
解压1:bzip2 -d FileName.bz2
解压2:bunzip2 FileName.bz2
压缩: bzip2 -z FileName.tar.bz2
解压:tar jxvf FileName.tar.bz2
压缩:tar jcvf FileName.tar.bz2 DirName
-
bz命令
解压1:bzip2 -d FileName.bz
解压2:bunzip2 FileName.bz
压缩:未知
.tar.bz
解压:tar jxvf FileName.tar.bz
-
Z命令
解压:uncompress FileName.Z
压缩:compress FileName
.tar.Z
解压:tar Zxvf FileName.tar.Z
压缩:tar Zcvf FileName.tar.Z DirName
-
zip命令
解压:unzip FileName.zip
压缩:zip FileName.zip DirName
98
chmod
选项
-c或——changes:效果类似“-v”参数,但仅回报更改的部分;
-f或--quiet或——silent:不显示错误信息;
-R或——recursive:递归处理,将指令目录下的所有文件及子目录一并处理;
-v或——verbose:显示指令执行过程;
--reference=<参考文件或目录>:把指定文件或目录的所属群组全部设成和参考文件或目录的所属群组相同;
<权限范围>+<权限设置>:开启权限范围的文件或目录的该选项权限设置;
<权限范围>-<权限设置>:关闭权限范围的文件或目录的该选项权限设置;
<权限范围>=<权限设置>:指定权限范围的文件或目录的该选项权限设置;
权限范围的表示法如下:
u User,即文件或目录的拥有者;
g Group,即文件或目录的所属群组;
o Other,除了文件或目录拥有者或所属群组之外,其他用户皆属于这个范围;
a All,即全部的用户,包含拥有者,所属群组以及其他用户;
r 读取权限,数字代号为“4”;
w 写入权限,数字代号为“2”;
x 执行或切换权限,数字代号为“1”;
- 不具任何权限,数字代号为“0”;
s 特殊功能说明:变更文件或目录的权限。
例子:
chmod u+x,g+w f01 //为文件f01设置自己可以执行,组员可以写入的权限
chmod u=rwx,g=rw,o=r f01
chmod 764 f01 chmod a+x f01 //对文件f01的u,g,o都设置可执行属性
99
linux下使用tar命令
解压
语法:tar [主选项+辅选项] 文件或者目录
使用该命令时,主选项是必须要有的,它告诉tar要做什么事情,辅选项是辅助使用的,可以选用。
主选项:
c 创建新的档案文件。如果用户想备份一个目录或是一些文件,就要选择这个选项。相当于打包。
x 从档案文件中释放文件。相当于拆包。
t 列出档案文件的内容,查看已经备份了哪些文件。
特别注意,在参数的下达中, c/x/t 仅能存在一个!不可同时存在!因为不可能同时压缩与解压缩。
辅助选项:
-z :是否同时具有 gzip 的属性?亦即是否需要用 gzip 压缩或解压? 一般格式为xx.tar.gz或xx. tgz
-j :是否同时具有 bzip2 的属性?亦即是否需要用 bzip2 压缩或解压?一般格式为xx.tar.bz2
-v :压缩的过程中显示文件!这个常用
-f :使用档名,请留意,在 f 之后要立即接档名喔!不要再加其他参数!
-p :使用原文件的原来属性(属性不会依据使用者而变)
--exclude FILE:在压缩的过程中,不要将 FILE 打包!
范例:
范例一:将整个 /etc 目录下的文件全部打包成为 /tmp/etc.tar
[root@linux ~]# tar -cvf /tmp/etc.tar /etc <==仅打包,不压缩!
[root@linux ~]# tar -zcvf /tmp/etc.tar.gz /etc <==打包后,以 gzip 压缩
[root@linux ~]# tar -jcvf /tmp/etc.tar.bz2 /etc <==打包后,以 bzip2 压缩
# 特别注意,在参数 f 之后的文件档名是自己取的,我们习惯上都用 .tar 来作为辨识。
# 如果加 z 参数,则以 .tar.gz 或 .tgz 来代表 gzip 压缩过的 tar file ~
# 如果加 j 参数,则以 .tar.bz2 来作为附档名啊~
# 上述指令在执行的时候,会显示一个警告讯息:
# 『tar: Removing leading `/" from member names』那是关於绝对路径的特殊设定。
范例二:查阅上述 /tmp/etc.tar.gz 文件内有哪些文件?
[root@linux ~]# tar -ztvf /tmp/etc.tar.gz
# 由於我们使用 gzip 压缩,所以要查阅该 tar file 内的文件时,
# 就得要加上 z 这个参数了!这很重要的!
范例三:将 /tmp/etc.tar.gz 文件解压缩在 /usr/local/src 底下
[root@linux ~]# cd /usr/local/src
[root@linux src]# tar -zxvf /tmp/etc.tar.gz
# 在预设的情况下,我们可以将压缩档在任何地方解开的!以这个范例来说
# 我先将工作目录变换到 /usr/local/src 底下,并且解开 /tmp/etc.tar.gz
# 则解开的目录会在 /usr/local/src/etc ,另外,如果您进入 /usr/local/src/etc
# 则会发现,该目录下的文件属性与 /etc/ 可能会有所不同喔!
范例四:在 /tmp 底下,我只想要将 /tmp/etc.tar.gz 内的 etc/passwd 解开而已
[root@linux ~]# cd /tmp
[root@linux tmp]# tar -zxvf /tmp/etc.tar.gz etc/passwd
# 我可以透过 tar -ztvf 来查阅 tarfile 内的文件名称,如果单只要一个文件,
# 就可以透过这个方式来下达!注意到! etc.tar.gz 内的根目录 / 是被拿掉了!
范例五:我要备份 /home, /etc ,但不要 /home/dmtsai
[root@linux ~]# tar --exclude /home/dmtsai -zcvf myfile.tar.gz /home/* /etc
另外:tar命令的C参数
$ tar -cvf file2.tar /home/usr2/file2
tar: Removing leading '/' from members names
home/usr2/file2
该命令可以将/home/usr2/file2文件打包到当前目录下的file2.tar中,需要注意的是:使用绝对路径标识的源文件,在用tar命令压缩后,文件名连同绝对路径(这里是home/usr2/,根目录'/'被自动去掉了)一并被压缩进来。使用tar命令解压缩后会出现以下情况:
$ tar -xvf file2.tar
$ ls
…… …… home …… ……
解压缩后的文件名不是想象中的file2,而是home/usr2/file2。
$ tar -cvf file2.tar -C /home/usr2 file2
该命令中的-C dir参数,将tar的工作目录从当前目录改为/home/usr2,将file2文件(不带绝对路径)压缩到file2.tar中。注意:-C dir参数的作用在于改变工作目录,其有效期为该命令中下一次-C dir参数之前。
使用tar的-C dir参数,同样可以做到在当前目录/home/usr1下将文件解压缩到其他目录,例如:
$ tar -xvf file2.tar -C /home/usr2
而tar不用-C dir参数时是无法做到的:
$ tar -xvf file2.tar /home/usr2
tar: /tmp/file: Not found in archive
tar: Error exit delayed from previous errors
100
#测试端口
telnet pgs.zhongchouban.com.cn 80
#退出telnet命令
ctrl + ]
telnet>quit
#测试IP
ping www.baidu.com
101Mail
1.配置
vim /etc/mail.rc
文件尾增加以下内容
set from=1968089885@qq.com smtp="smtp.qq.com"
set smtp-auth-user="1968089885@qq.com" smtp-auth-password="123456"
set smtp-auth=login
说明:
from: 对方收到邮件时显示的发件人
smtp: 指定第三方发送邮件的smtp服务器地址
smtp-auth: SMTP的认证方式。默认是LOGIN,也可改为CRAM-MD5或PLAIN方式
smtp-auth-user: 第三方发邮件的用户名
smtp-auth-password: 用户名对应密码
2.Mail命令
% mail --h
mail: illegal option -- -
Usage: mail -eiIUdEFntBDNHRV~ -T FILE -u USER -h hops -r address -s SUBJECT -a FILE -q FILE -f FILE -A ACCOUNT -b USERS -c USERS -S OPTION users
注:部分系统参数稍有差异,最好看帮助
1) 无邮件正文
mail -s "主题" 收件地址
% mail -s "测试" 1910312611@qq.com
2) 有邮件正文
mail -s "主题" 收件地址< 文件(邮件正文.txt)
% mail -s "邮件主题" 1968089885@foxmail.com < /data/findyou.txt
echo "邮件正文" | mail -s 邮件主题 收件地址
% echo "邮件正文内容" | mail -s "邮件主题" 1968089885@foxmail.com
cat 邮件正文.txt | mail -s 邮件主题 收件地址
% cat /data/findyou.txt | mail -s "邮件主题" 1910312611@qq.com
3) 带附件
mail -s "主题" 收件地址 -a 附件 < 文件(邮件正文.txt)
% mail -s "邮件主题" 1910312611@qq.com -a /data/findyou.tar.gz < /data/findyou.txt
3.脚本
sendmail.sh
复制代码
#!/bin/bash
#author:findyou
help(){
echo "eg: $0 [Subject] [address] [content_file] [file]"
echo ""
exit 1
}
if [ ! -n "$1" ] ; then
help
fi
cDate=`date +%Y%m%d`
if [ ! -n "$2" ] ; then
help
else
mail_to=$2
echo " Send Mail to ${mail_to}"
fi
if [ ! -n "$4" ] ; then
mail -s $1 ${mail_to}<$3
else
mail -s $1 -a $4 ${mail_to}<$3
fi
复制代码
使用
[root@123]$ ./sendmail.sh test 1910312611@qq.com abc.txt
Send Mail to 1968089885@qq.com
[root@123]$
200.shell比较大小
-eq:等于
-ne:不等于
-le:小于等于
-ge:大于等于
-lt:小于
-gt:大于
-ne:不等于
-le:小于等于
-ge:大于等于
-lt:小于
-gt:大于
480.sftp远程连接命令
sftp -oPort=60001 root@192.168.0.254
#使用-o选项来指定端口号。
#-oPort=远程端口号
sftp> get /var/www/fuyatao/index.php /home/fuyatao/
#这条语句将从远程主机的 /var/www/fuyatao/目录下将 index.php下载到本地 /home/fuyatao/目录下。
sftp> put /home/fuyatao/downloads/Linuxgl.pdf /var/www/fuyatao/
#这条语句将把本地 /home/fuyatao/downloads/目录下的 linuxgl.pdf文件上传至远程主机/var/www/fuyatao/ 目录下
490.查询文件内容
grep keywords bis*/*/etc/*.xml #模糊查询文件内容
grep -r "172.16.19.24" ./ #遍历文件夹查找文件内容
500.LESS命令简单介绍以及使用
less 工具也是对文件或其它输出进行分页显示的工具,应该说是linux正统查看文件内容的工具,功能极其强大。less 的用法比起 more 更加的有弹性。在 more 的时候,我们并没有办法向前面翻, 只能往后面看,但若使用了 less 时,就可以使用 [pageup] [pagedown] 等按键的功能来往前往后翻看文件,更容易用来查看一个文件的内容!除此之外,在 less 里头可以拥有更多的搜索功能,不止可以向下搜,也可以向上搜。
less -N devtest.txt #查看文件,显示行号
命令参数:
-b <缓冲区大小> 设置缓冲区的大小
-e 当文件显示结束后,自动离开
-f 强迫打开特殊文件,例如外围设备代号、目录和二进制文件
-g 只标志最后搜索的关键词
-i 忽略搜索时的大小写
-m 显示类似more命令的百分比
-N 显示每行的行号
-o <文件名> 将less 输出的内容在指定文件中保存起来
-Q 不使用警告音
-s 显示连续空行为一行
-S 行过长时间将超出部分舍弃
-x <数字> 将“tab”键显示为规定的数字空格
/字符串:向下搜索“字符串”的功能
?字符串:向上搜索“字符串”的功能
n:重复前一个搜索(与 / 或 ? 有关)
N:反向重复前一个搜索(与 / 或 ? 有关)
b 向后翻一页
d 向后翻半页
h 显示帮助界面
u 向前滚动半页
y 向前滚动一行
回车键 向下滚动一行
- 空格键:向下翻动一页
- [PageDown]:向下翻动一页
- [PageUp]:向上翻动一页
- /字符串:向下查询“字符串”的功能
- ?字符串:向上查询“字符串”的功能
- n:重复前一个查询
- N:反向重复前一个查询
- q:退出less命令
600.linux清屏命令
在windows的DOS操作界面里面,清屏的命令是cls,那么在linux 里面的清屏命令是什么呢?下面笔者分享几种在linux下用过的清屏方法。
1、clear命令、这个命令将会刷新屏幕,本质上只是让终端显示页向后翻了一页,如果向上滚动屏幕还可以看到之前的操作信息。
2、Ctrl+l(小写的L)、这是一个清屏的快捷键,这个是笔者在工作中用得最多的一种清屏方式,清屏效果同clear命令一样。
3、reset命令、这个命令将完全刷新终端屏幕,之前的终端输入操作信息将都会被清空,这样虽然比较清爽,但整个命令过程速度有点慢,使用较少。
值得一提的是reset命令在你的终端控制错乱时非常有用。如输入字符不出现在光标的位置的情况。还有当你敲击回车键时,新提示符并没有出现在新行上而是出现在老提示符的前面。此时reset命令就能用来修正这些问题。
基本命令参数
-b 《缓冲区大小》 设置缓冲区的大小
-e 当文件显示结束后,自动离开
-f 强迫打开特殊文件,例如外围设备代号、目录和二进制文件
-g 只标志最后搜索的关键词
-i 忽略搜索时的大小写
-m 显示类似more命令的百分比
-N 显示每行的行号
-o 《文件名》 将less 输出的内容在指定文件中保存起来
-Q 不使用警告音
-s 显示连续空行为一行
-S 行过长时间将超出部分舍弃
-x 《数字》 将“tab”键显示为规定的数字空格
/字符串:向下搜索“字符串”的功能
?字符串:向上搜索“字符串”的功能
n:重复前一个搜索(与 / 或 ? 有关)
N:反向重复前一个搜索(与 / 或 ? 有关)
b 向后翻一页
d 向后翻半页
h 显示帮助界面
Q 退出less 命令
u 向前滚动半页
y 向前滚动一行
空格键 滚动一行
回车键 滚动一页
[pagedown]: 向下翻动一页
[pageup]: 向上翻动一页
常见的使用方法
1、搜索
当使用命令 less file-name 打开一个文件后,可以使用下面的方式在文件中搜索。搜索时整个文本中匹配的部分会被高亮显示。
1.1向前搜索
/ : 使用一个模式进行搜索,并定位到下一个匹配的文本
n : 向前查找下一个匹配的文本
N : 向后查找前一个匹配的文本
1.2向后搜索
? : 使用模式进行搜索,并定位到前一个匹配的文本
n : 向后查找下一个匹配的文本
N : 向前查找前一个匹配的文本
2 全屏导航
ctrl + F :向前移动一屏
ctrl + B :向后移动一屏
ctrl + D :向前移动半屏
ctrl + U :向后移动半屏
3 、单行导航
j : 向下移动一行
k : 向上移动一行
4 、其它导航
G : 移动到最后一行
g : 移动到第一行
按空格:向下翻一页
b:向上翻一页
d:向下翻半页
u:向上翻半页
q / ZZ : 退出 less 命令
5 、编辑文件
v : 进入编辑模式,使用配置的编辑器编辑当前文件
6 标记导航
当使用 less 查看大文件时,可以在任何一个位置作标记,可以通过命令导航到标有特定标记的文本位置。
ma : 使用 a 标记文本的当前位置
'a : 导航到标记 a 处
7 、浏览多个文件
方式一,传递多个参数给 less,就能浏览多个文件。
less file1 file2
方式二,正在浏览一个文件时,使用 :e 打开另一个文件。
less file1
:e file2
当打开多个文件时,使用如下命令在多个文件之间切换
:n - 浏览下一个文件
:p - 浏览前一个文件
8 、less 版 tail -f
在 Linux 动态查看日志文件常用的命令非 tail -f 莫属,其实 less 也能完成这项工作,使用 F 命令。
使用 less file-name 打开日志文件,执行命令 F,可以实现类似 tail -f 的效果。
1001 关机命令
poweroff,就是掉电关机了
halt,停掉系统而已,并没有掉电,主板是通电的
shutdown -h now ,立刻关机,后边不写now而是写一个具体时间(sec)可以设置几秒后执行这一语句,实际上halt后是掉电关机的。
1002 重启命令
reboot,重启
shutdown -r +10,十分钟后关机并马上重启,参考https://www.cnblogs.com/summergarden/archive/2013/01/12/2857754.html
1002. 挂载、取消挂载光盘,
mount -t iso9660 /dev/cdrom /mnt/cdrom
umount /dev/cdrom