首页 > 代码库 > Linux命令进阶

Linux命令进阶

配置文件

  • .bashrc/.zshrc
    保存个人的一些个性化设置,如命令别名、路径等。一般会在.bash_profile文件中显式调用.bashrc。登陆linux启动bash时首先会去读取~/.bash_profile文件,这样~/.bashrc也就得到执行了,你的个性化设置也就生效了

系统管理员对用户和用户组管理文件

  • /etc/passwd
  • /etc/shadow
  • /etc/group
  • /etc/gshadow

文件目录操作


cat

  • 三大主要功能
    1.一次显示整个文件:cat filename
    2.从键盘创建一个文件:cat > filename 只能创建新文件,不能编辑已有文件.
    3.将几个文件合并为一个文件:cat file1 file2 > file
  • -b, –number-nonblank 对非空输出行编号
  • -n, –number 对输出的所有行编号,由1开始对所有输出的行数编号

    cat -n log2012.log > log2013.log 
  • tac log.txt 反向列示

head/tail

  • head -n 5 log2014.log 显示文件的前n行
  • head -c 20 log2014.log 显示文件前n个字节
  • head -c -32 log2014.log 文件的除了最后n个字节以外的内容
  • head -n -6 log2014.log 输出文件除了最后n行的全部内容

more / less

  • more +3 log2012.log 显示文件中从第3行起的内容
  • more +/day3 log2012.log 从文件中查找第一个出现”day3”字符串的行,并从该处前两行开始显示输出
  • more -5 log2012.log 设定每屏显示行数
  • ls -l | more -5

mv

  • -f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;
  • -t : –target-directory=DIRECTORY move all SOURCE arguments into DIRECTORY,即指定mv的目标目录,该选项适用于移动多个源文件到一个目录的情况,此时目标目录在前,源文件在后。

nl

nl命令在linux系统中用来计算文件中行号。nl 可以将输出的文件内容自动的加上行号!其默认的结果与 cat -n 有点不太一样, nl 可以将行号做比较多的显示设计,包括位数与是否自动补齐 0 等等的功能

rm

  • 自定义回收站
    打开.bashrc或者.zshrc文件,在后边添加如下命令:

    myrm(){ D=/tmp/$(date +%Y%m%d%H%M%S); mkdir -p $D;     mv "$@" $D && echo "moved to $D ok"; }
    alias myrm=‘myrm‘

    source .zshrc进行生效,就可以使用myrm命令了

touch

  • -r  把指定文档或目录的日期时间,统统设成和参考文档或目录的日期时间相同

    touch -r log.log log2012.log
  • -t  使用指定的日期时间,而非现在的时间,time的格式[[CC]YY]MMDDhhmm[.SS]

    touch -t 201211142234.50 log.log 

文件查找


find

  • find . -size +1000c -print 查找当前目录大于1K的文件

locate

ocate 让使用者可以很快速的搜寻档案系统内是否有指定的档案。其方法是先建立一个包括系统内所有档案名称及路径的数据库,之后当寻找时就只需查询这个数据库,而不必实际深入档案系统之中了。在一般的 distribution 之中,数据库的建立都被放在 crontab 中自动执行
PS: 有时候电脑上可能没有locate命令,这个时候需要先安装mlocate,然后使用updatedb进行更新就可以了

whereis

whereis命令是定位可执行文件、源代码文件、帮助文件在文件系统中的位置
* -b 定位可执行文件,二进制文件
* -m 定位帮助文件
* -s 定位源代码文件

which

which命令的作用是,在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果

文件打包上传与下载

  • 区分打包和压缩
    打包是指将一大堆文件或目录变成一个总的文件;压缩则是将一个大的文件通过一些压缩算法变成一个小文件。Linux中很多压缩程序只能针对一个文件进行压缩,这样当你想要压缩一大堆文件时,你得先将这一大堆文件先打成一个包(tar命令),然后再用压缩程序进行压缩(gzip bzip2命令)。

用SecureCRT来上传和下载文件

tar

用来压缩和解压文件。tar本身不具有压缩功能。他是调用压缩功能实现的

  • -x 从压缩的文件中提取文件
  • -z 支持gzip解压文件
  • -c 建立新的压缩文件
  • -v 显示操作过程
  • -f 指定压缩文件
  • -d 记录文件的差别

    tar
    解包:tar xvf FileName.tar
    打包:tar cvf 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
    .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
    .rar
    解压:rar x FileName.rar
    压缩:rar a FileName.rar DirName 

文件权限设置

chgrp

使用chgrp指令去变更文件与目录所属群组

  • 群组和群组识别码可以去/etc/group文件中查看
  • -v 运行时显示详细的处理信息
  • –dereference 作用于符号链接的指向,而不是符号链接本身

    改变文件的群组属性 
    chgrp -v bin log2012.log
    根据指定文件改变文件的群组属性 
    chgrp --reference=log2012.log log2013.log
    改变指定目录以及其子目录下的所有文件的群组属性 
    chgrp -R bin test6
    通过群组识别码改变文件群组属性
    chgrp -R 100 test6

chown命令

通过chown改变文件的拥有者和群组。在更改文件的所有者或所属群组时,可以使用用户名称和用户识别码设置。普通用户不能将自己的文件改变成其他的拥有者。其操作权限一般为管理员。

  • -R 处理指定目录以及其子目录下的所有文件
  • -v 显示详细的处理信息

    改变拥有者和群组
    chown mail:mail log2012.log 
    改变文件拥有者和群组
    chown root: log2012.log
    改变文件群组
    chown :mail log2012.log
    改变指定目录以及其子目录下的所有文件的拥有者和群组 
    chown -R -v root:mail test6

磁盘存储相关

df

  • 必要参数
    • -a 全部文件系统列表
    • -h 方便阅读方式显示
    • -H 等于“-h”,但是计算式,1K=1000,而不是1K=1024
    • -i 显示inode信息
    • -k 区块为1024字节
    • -l 只显示本地文件系统
    • -m 区块为1048576字节
    • –no-sync 忽略 sync 命令
    • -P 输出格式为POSIX
    • –sync 在取得磁盘信息前,先执行sync命令
    • -T 文件系统类型
  • 选择参数
    • –block-size=<区块大小> 指定区块大小
    • -t<文件系统类型> 只显示选定文件系统的磁盘信息
    • -x<文件系统类型> 不显示选定文件系统的磁盘信息
    • –help 显示帮助信息
    • –version 显示版本信息

du

暂时使用的较少,不详述

性能监控与优化

top

显示当前系统正在执行的进程的相关信息,包括进程ID、内存占用率、CPU占用率等

  • 常用参数
    • -b 批处理
    • -c 显示完整的治命令
    • -I 忽略失效过程
    • -s 保密模式
    • -S 累积模式
    • -i<时间> 设置间隔时间
    • -u<用户名> 指定用户名
    • -p<进程号> 指定进程
    • -n<次数> 循环显示的次数
  • 举例
    技术分享 
    • 第一行:当前系统时间;up xxx 运行了多久;当前1个用户登录;load average后面的三个数分别是1分钟、5分钟、15分钟的负载情况。如果这个数除以逻辑CPU的数量,结果高于5的时候就表明系统在超负荷运转了
    • 第二行:总的进程数量,zombie是僵死的
    • PID行:进程ID;进程所有者;进程优先级(PR);nice值,负值表示高优先级,正值表示低优先级;VIRT,进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES;RES,进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA;

free

free 命令显示系统使用和空闲的内存情况,包括物理内存、交互区内存(swap)和内核缓冲区内存。共享内存将被忽略

  • 命令参数
    • -b  以Byte为单位显示内存使用情况。
    • -k  以KB为单位显示内存使用情况。
    • -m  以MB为单位显示内存使用情况。
    • -g 以GB为单位显示内存使用情况。
    • -o  不显示缓冲区调节列。
    • -s<间隔秒数>  持续观察内存使用状况。
    • -t  显示内存总和列。
    • -V  显示版本信息。
  • 内存额定值文件:cat /proc/meminfo
  • 实例

    free
    free -g
    free -m
    free -s 1 //每秒执行一次

vmstat/iostat命令/lsof命令

还没接触到,先不做解释
http://www.cnblogs.com/peida/archive/2012/12/25/2833108.html

网络命令

ifconfig

用ifconfig命令配置的网卡信息,在网卡重启后机器重启后,配置就不存在。要想将上述的配置信息永远的存的电脑里,那就要修改网卡的配置文件了。

  • 命令参数
    • up 启动指定网络设备/网卡。
    • down 关闭指定网络设备/网卡。
    • arp 设置指定网卡是否支持ARP协议
  • 实例

    启动和关闭网卡
    ifconfig eth0 up
    ifconfig eth0 down
    为网卡配置ipv6地址
    ifconfig eth0 add 33ffe:3240:800:1005::2/64
    用ifconfig修改MAC地址
    ifconfig eth0 hw ether 00:AA:BB:CC:DD:EE
    配置IP地址
    ifconfig eth0 192.168.120.56 netmask 255.255.255.0 broadcast 192.168.120.255
    启用和关闭ARP协议
    ifconfig eth0 arp
    ifconfig eth0 -arp
    设置最大传输单元
    ifconfig eth0 mtu 1500

rcp(remote file copy)

rcp命令用在远端复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到该目录中。

  • 命令参数
    • -r 递归地把源目录中的所有内容拷贝到目的目录中。要使用这个选项,目的必须是一个目录。
    • -p 试图保留源文件的修改时间和模式,忽略umask。
    • -k 请求rcp获得在指定区域内的远程主机的Kerberos 许可,而不是获得由krb_relmofhost⑶确定的远程主机区域内的远程主机的Kerberos许可。
    • -x 为传送的所有数据打开DES加密。这会影响响应时间和CPU利用率,但是可以提高安全性。如果在文件名中指定的路径不是完整的路径名,那么这个路径被解释为相对远程机上同名用户的主目录。如果没有给出远程用户名,就使用当前用户名。如果远程机上的路径包含特殊shell字符,需要用反斜线(\)、双引号(”)或单引号(’)括起来,使所有的shell元字符都能被远程地解释。需要说明的是,rcp不提示输入口令,它通过rsh命令来执行拷贝。
    • directory 每个文件或目录参数既可以是远程文件名也可以是本地文件名。远程文件名具有如下形式:rname@rhost:path,其中rname是远程用户名,rhost是远程计算机名,path是这个文件的路径
  • 实例

    rcp local_file remote_hostname:remote_fileEnter
    rcp remote_hostname:remote_file local_fileEnter

scp(secure copy)

scp传输是加密的

  • 命令格式: scp [参数] [原路径] [目标路径]
  • 命令参数
    • -1 强制scp命令使用协议ssh1
    • -2 强制scp命令使用协议ssh2
    • -4 强制scp命令只使用IPv4寻址
    • -6 强制scp命令只使用IPv6寻址
    • -B 使用批处理模式(传输过程中不询问传输口令或短语)
    • -C 允许压缩。(将-C标志传递给ssh,从而打开压缩功能)
    • -p 保留原文件的修改时间,访问时间和访问权限。
    • -q 不显示传输进度条。
    • -r 递归复制整个目录。
    • -v 详细方式显示输出。scp和ssh(1)会显示出整个过程的调试信息。这些信息用于调试连接,验证和配置问题。
    • -c cipher 以cipher将数据传输进行加密,这个选项将直接传递给ssh。
    • -F ssh_config 指定一个替代的ssh配置文件,此参数直接传递给ssh。
    • -i identity_file 从指定文件中读取传输时使用的密钥文件,此参数直接传递给ssh。
    • -l limit 限定用户所能使用的带宽,以Kbit/s为单位。
    • -o ssh_option 如果习惯于使用ssh_config(5)中的参数传递方式,
    • -P port 注意是大写的P, port是指定数据传输用到的端口号
    • -S program 指定加密传输时所使用的程序。此程序必须能够理解ssh(1)的选项。
  • 实例

    • 从本地服务器复制到远程服务器

      scp local_file remote_username@remote_ip:remote_folder/file
      scp local_file remote_ip:remote_folder/file 
    • 从远程服务器复制到本地服务器

      scp root@192.168.120.204:/opt/soft/nginx-0.5.38.tar.gz /opt/soft/

route/traceroute/netstat/ss

待续。。。

<script type="text/javascript"> $(function () { $(‘pre.prettyprint code‘).each(function () { var lines = $(this).text().split(‘\n‘).length; var $numbering = $(‘
    ‘).addClass(‘pre-numbering‘).hide(); $(this).addClass(‘has-numbering‘).parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($(‘
  • ‘).text(i)); }; $numbering.fadeIn(1700); }); }); </script>

    Linux命令进阶