shell--管理重任

 

目录

1、文件下载:wget

2、归档:tar

3、压缩文件:gzip、bzip2、lzma

4、远程连接工具:SHH

5、网络传输文件:ftp、scp

6、分析网络流量与端口:lsof、netstat

7、监视磁盘使用情况:du、df

8、进程管理:top、ps、pgrep


1、文件下载:wget

wget [参数] [URL地址]

-a, –append-output=FILE 把记录追加到FILE文件中
-q, –quiet 安静模式(没有输出)
-t, –tries=NUMBER 设定最大尝试链接次数(0 表示无限制).
-Q, –quota=NUMBER 设置下载的容量限制

$ wget -r -np -nd http://example.com/packages/
# 这条命令可以下载 http://example.com 网站上 packages 目录中的所有文件。其中,-np 的作用是不遍历父目录,-nd 表示不在本机重新创建目录结构。
$ wget -r -np -nd --accept=iso http://example.com/centos-5/i386/
#与上一条命令相似,但多加了一个 --accept=iso 选项,这指示 wget 仅下载 i386 目录中所有扩展名为 iso 的文件。你也可以指定多个扩展名,只需用逗号分隔即可。
$ wget -i filename.txt
#批量下载的情形,把所有需要下载文件的地址放到 filename.txt 中,然后 wget 就会自动为你下载所有文件
$ wget -c http://example.com/really-big-file.iso #这里所指定的 -c 选项的作用为断点续传。
$ wget -O wordpress.zip http://www.linuxde.net/download.aspx?id=1080 #指定输出文件名,-o指定一个日志文件
$ wget --limit-rate=300k http://www.linuxde.net/testfile.zip # wget限速下载
$ wget -b http://www.linuxde.net/testfile.zip # 使用wget后台下载
$ wget --input-file=ftp://ftp.lfs-matrix.net/pub/lfs/lfs-packages/7.7-systemd/ --continue --directory-prefix=/root/toot/  #批量下载文件到/root/toot/


2、归档:tar

-c 创建新的文档
-v 显示详细的tar处理的文件信息
-f 要操作的文件名
-r 把要增加的文件追加在压缩文件的末尾
-t 列出归档文件中包含的文件
-x 解压文件
-A 合并多个tar文件
-u 控制只添加出现改动的同名文件
-d 将归档中的文件与文件系统中的文件做比较,用来确定是否需要创建新的归档文件
-z 以gzip格式压缩/解压缩  (file.tar.gz或者file.tgz)
-j 以bzip2格式压缩/解压缩(file.tar.bz2)
--lzma 以lzma的格式压缩 (file.tar.lzma)
-a 让tar根据扩展名自动选择压缩算法(或者使用--auto-compress)

例如:
$ tar -cvf sysconfig.tar /etc/sysconfig/ #将/etc/sysconfig/目录下的文件打包成sysconfig.tar,并且放在当前目录中
$ tar -rvf sysconfig.tar /etc/sysconfig/  #将/etc/sysconfig/目录下的文件添加到文件sysconfig.tar文件末尾
$ tar -tvf sysconfig.tar  #查看压缩文件sysconfig.tar文件里面的内容参数
$ tar -xvf sysconfig.tar  #将压缩文件sysconfig.tar文件解压到当前文件夹内,使用 -C可指定文件提取到哪个目录
$ tar -Af file1.tar file2.tar   #合并file2.tar的内容到file1.tar中
$ tar --delete --file archive.tar filea   #删除archive.tar中的filea
$ tar -cf arch.tar * --exclude "*.txt" #归档过程中排出所有的txt文件
$ tar -czvf sysconfig.tar.gz /etc/sysconfig/ #将目录/etc/sysconfig/打包成一个tar文件包,通过使用-z参数来调用gzip程序,对目录/etc/sysconfig/进行压缩,压缩成文件sysconfig.tar.gz,并且将压缩成的文件放在当前文件夹内
$ tar -xzvf sysconfig.tar.gz #上一个文件的解压缩

3、压缩文件:gzip、bzip2、lzma

      gzip只能压缩文件 , 不能压缩目录 ,后缀名为.gz , 而且不保留原文件,解压使用gzip –d或者 gunzip 。

     bzip2同gzip,压缩效率会更高,但耗时也更长,使用bunzip2来解压;lzma同理,解压为unlzma。

      gzip [参数] [文件或者目录]

-a 使用ASCII文字模式。
-c 把压缩后的文件输出到标准输出设备,不去变动原始文件。
-d 解开压缩文件
-r 递归处理,将指定目录下的所有文件及子目录一并处理。
-l 列出压缩文件的相关信息。
-q 不显示警告信息。
-v 显示指令执行过程
-V 显示版本信息。
-num 用指定的数字num调整压缩的速度,-1或--fast表示最快压缩方法(低压缩比),-9或--best表示最慢压缩方法(高压缩比)。系统缺省值为6。


例如:
$ gzip -l test.tar.gz	#查看test.tar.gz内容,但不进行解压
$ gzip -dv * #将当前目录下的每个压缩的文件解压,并列出详细信息
$ gzip -rv test # 递归的压缩目录
$ zcat test.gz #读取gzip格式文件

 

4、远程连接工具:SHH

        ssh服务是一个守护进程(demon),系统后台监听客户端的连接,ssh服务端的进程名为sshd,负责实时监听客户端的请求(IP 22端口),包括公共秘钥等交换等信息。

$ ssh root@192.168.25.137 #连接远程主机
$ ssh root@192.168.25.137 'echo user :$(whoami);echo OS: $(uname)' #在远程主机执行命令,多个命令分号隔开
$ ssh omd@192.168.1.100 -t "sh /home/omd/ftl.sh"  # 远程登录服务器后执行某个脚本
$ ssh user@remote_host 'echo' < file #在远程主机上,echo打印出从stdin接收到的数据,但这些数据是从本地主体远程传递到shell的stdin中的
 >tar -czf -Localfolder | ssh 'tar -xzvf-' 将本地主机上的tar存档文件传给远程主机


$ netstat -a | grep ssh  # 查看ssh端口   
$ ps -ef | grep ssh # 查询sshd进程
$ ll /root/.ssh/known_hosts  #  查看ssh的秘钥目录
$ cat /etc/ssh/sshd_config  # ssh的配置文件

5、网络传输文件:ftp、scp

       通过FTP传输文件可以使用ftp命令或者lftp命令;通过ssh传输文件可以使用scp或者sftp。rsync可以实现系统间的文件同步。

ls:列出远程机的当前目录
cd:在远程机上改变工作目录
lcd:在本地机上改变工作目录
get 文件名:将文件下载到本地主机的当前目录下
put 文件名:将文件从当前目录上传到远程主机

例如:
$ sftp fyt@202.206.64.33 #登陆后使用get命令下载即可
$ scp user@remotehost:/home/path/filename filename #将远程主机中的文件渎职到当前目录下并使用给定的文件名
$ scp -r /home/user user@remotehost:/home/backups #将目录/home/user递归复制到远程主机中
(使用-p能够保留文件的权限和模式)

6、分析网络流量与端口:lsof、netstat

      lsof:列出所有打开的文件,输出信息包括:COMMAND:进程的名称;PID:进程标识符;PPID:父进程标识符(需要指定-R参数);USER:进程所有者;PGID:进程所属组;FD:文件描述符,应用程序通过文件描述符识别该文件。;DEVICE:指定磁盘的名称;SIZE:文件的大小;NODE:索引节点(文件在磁盘上的标识);NAME:打开文件的确切名称

$ lsof     #列出所有打开的文件
$ lsof /filepath/file   # 查看谁正在使用某个文件
$ lsof +D /filepath/filepath2/ #递归查看某个目录的文件信息,对应目录下的所有子目录和文件都会被列出
$ lsof | grep '/filepath/filepath2/' #遍历查看某个目录的所有文件信息 的方法
$ lsof  -u username  # 列出某个用户打开的文件信息
$ lsof -c mysql  # 列出某个程序所打开的文件信息(同lsof | grep mysql)
$ lsof -c mysql -c apache # 列出多个程序多打开的文件信息
$ lsof   -u ^root # 列出除了某个用户外的被打开的文件信息
$ lsof -p 123,456,789  # 列出多个进程号对应的文件信息
$ lsof  -i tcp # 列出所有tcp 网络连接信息
$ lsof -i :3306  # 列出谁在使用某个端口
$ lsof -i tcp:80  # 列出谁在使用特定的tcp端口
$ lsof  -a -u test -i # 列出某个用户的所有活跃的网络端口
$ lsof -i | grep ":[0-9a-z] +->" -o | grep ":[0-9a-z] +" -o | sort | uniq #列出主机当前开放的端口

      netstat:用来打印Linux中网络系统的状态信息,可让你得知整个Linux系统的网络情况。

$ netstat -a     #列出所有端口
$ netstat -at    #列出所有tcp端口
$ netstat -au    #列出所有udp端口
$ netstat -l        #只显示监听端口
$ netstat -pt #在netstat输出中显示 PID 和进程名称
$ netstat -r  #显示核心路由信息(-rn显示数字格式) 
$ netstat -ap | grep ssh #找出程序运行的端口
$ netstat -an | grep ':80' #找出运行在指定端口的进程
$ netstat -i #显示网络接口列表
$ netstat -anpo | grep "php-cgi" | wc -l #查看phpcgi进程数,如果接近预设值,说明不够用,需要增加
$ netstat -ntu | grep :80 | awk '{print $5}' | cut -d: -f1 | awk '{++ip[$1]} END {for(i in ip) print ip[i],"\t",i}' | sort -nr #查看连接某服务端口最多的的IP地址

7、监视磁盘使用情况:du、df

      du(Disk Usage):显示每个文件和目录的磁盘使用空间

-a   #递归的输出指定目录或者多个目录中所有文件的统计结果。
-b  #使用特定单位打印,以字节byte为单位。
-c  #显示目录中文件的大小,同时也显示总和;单位KB。
-s  #仅显示目录的总值,单位KB。
-h  #使用合适的单位显示
-S   #显示个别目录的大小时,并不含其子目录的大小。 
--exclude和--exclude-from:排除部分文件
--max-depth :限制du应该遍历多少层子目录

$ du -sh /home/master/documents  #查看某个目录下文件的大小
$ du -ak /home/slynxc | sort -nrk 1 | head #显示所有文件的大小和目录的大小,对第一列(文件大小)逆序排序,然后输出前10个

     df(Disk Free):显示磁盘分区上可以使用的磁盘空间

-a 全部文件系统列表
-h 方便阅读方式显示
-l 只显示本地文件系统

$ df /home   #指定一个文件夹,查看该文件夹所在磁盘的使用情况
$ df -T #显示出每个文件系统的类型

    free:查看系统内存的使用状态,系统已用及空余物理内存量、交换分区使用情况(swap memory)、内核占用的缓存、及共享内存。使用同上,-h可显示易读的格式。

8、进程管理:top、ps、pgrep

     ps:用于报告当前系统的进程状态。可以搭配kill指令随时中断、删除不必要的程序。

-e、-ax:输出系统中运行的所有进程信息(every,all)
-f:显示多列信息,UID,PPIP,C与STIME栏位。
-u:选择用户所拥有进程数
-l:长格式列表
-a:显示现行终端机下的所有程序
e:显示每个程序所使用的环境变量。
f:创建进程的树状视图,显示出任务之间的父子关系
-o:指定显示那些数据
--sort:对输出排序,+表示升序-表示降序

$ ps -ef #显示所有当前进程
$ ps aux #显示所有当前进程
$ ps -ax #显示所有当前进程
$ ps -u pungki #根据用户过滤进程
$ ps -aux --sort -pcpu | less #根据 CPU 使用来升序排序
$ ps -aux --sort -pmem | less #根据用户过滤进程
$ ps -aux --sort -pcpu,+pmem | head -n 10 #查询全10个使用cpu和内存最高的应用
$ ps -C getty #通过进程名和PID过滤
$ ps -f -C getty #带格式显示的,通过进程名和PID过滤
$ ps -L 1213 #根据线程来过滤进程
$ ps -axjf(或pstree) #树形显示进程
$ ps -eo pid,user,args # 显示安全信息
$ ps -U root -u root u #格式化输出 root 用户(真实的或有效的UID)创建的进程

   top:实时显示系统中各个进程的资源占用情况。

-b:以批处理模式操作;
-c:显示完整的治命令;
-d:屏幕刷新间隔时间;
-I:忽略失效过程;
-s:保密模式;
-S:累积模式;
-u [用户名]:指定用户名;
-p [进程号]:指定进程;
-n [次数]:循环显示的次数。

    pgrep是linux中常用的通过程序名字来查询进程的命令。

-l 同时显示进程名和PID
-o 当匹配多个进程时,显示进程号最小的那个
-n 当匹配多个进程时,显示进程号最大的那个
-u 过滤用户
-c 返回匹配的进程数量

pgrep相当于 $ ps -e o pid,cmd | awk ‘{print 1,2}’ | grep keyword

      kill -9 pid :按照pid杀死进程

 

 

 

其他:

$ host google.com #列出某个域名下的所有ip地址
$ ifconfig #配置及显示网络接口、子网掩码等信息
$ nslookup #完成名字与ip地址之间的相互映射
$ route #显示路由表
$ ping 192.168.0.1 #检查主机是否可达
 #(返回信息中的rtt:round trip time每个分组的往返信息,ttl:time of live生存时间,seq:序列号)
$ which ls   # which命令用来查找某个命令的位置。
$ whereis ls  #whereis 不仅能返回命令的路径,还能打印其对应的命令手册的位置以及命令源代码的路径
$ whatis ls  #会输出作为参数的命令的简短描述信息

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值