zoukankan      html  css  js  c++  java
  • Linux常用命令汇总

    1.uname
    uname  -a或cat /proc/version或cat /etc/issue:查看当前主机的版本和内核信息;
    uname -r:只查看内核信息;
    uname -m:显示机器的处理器架构;
    cat /proc/swaps:显示哪些swap被使用;
    -------------------------------------------------------------------------------------------------------------------------
    2.date
    date:显示系统日期
    cal 2016:显示2016年全年日历
    -------------------------------------------------------------------------------------------------------------------------
    3.关机
    shutdown -h now:关闭系统
    shutdown -r now:重启系统
    shutdown -h -t 60:60s后关机   -h:关闭电源   -t:延迟关机的时间
    shutdown -a:中止关机
    reboot:重启
    logout:注销

    -------------------------------------------------------------------------------------------------------------------------
    4.添加用户adduser/useradd
    [useradd]
    语法:useradd 选项  用户名

    其中各选项含义如下:

    代码:
    -c comment 指定一段注释性描述。
    -d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。
    -g 用户组 指定用户所属的用户组。
    -G 用户组,用户组 指定用户所属的附加组。
    -s Shell文件 指定用户的登录Shell。
    -u 用户号 指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号。

    [adduser]
    adduser 用户名

    二者的区别:
    (1)使用useradd时,如果后面不添加任何参数选项,例如:#sudo useradd test创建出来的用户将是默认“三无”用户:一无Home Directory,二无密码,三无系统Shell。
    (2)使用adduser时,创建用户的过程更像是一种人机对话,系统会提示你输入各种信息,然后会根据这些信息帮你创建新用户。
    (3)adduser更适合初级使用者,因为不用去记那些繁琐的参数选项,只要跟着系统的提示一步一步进行下去就行,缺点就是整个创建过程比较复杂而漫长;而useradd比较适合有些高阶经验的使用者,往往一行命令加参数就能解决很多问题,所以创建起来十分方便。

    userdel 用户名:删除用户
    -------------------------------------------------------------------------------------------------------------------------
    5.find

    (1).命令格式:

    find pathname -options [-print -exec -ok ...]

    (2).命令功能:

    用于在文件树种查找文件,并作出相应的处理

    (3).命令参数:

    pathname: find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录。 
    -print: find命令将匹配的文件输出到标准输出。 
    -exec: find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为'command' {  } ;,注意{   }和;之间的空格。 
    -ok: 和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。

    (4).命令选项:

    -name   按照文件名查找文件。
    -perm   按照文件权限来查找文件。
    -prune  使用这一选项可以使find命令不在当前指定的目录中查找,如果同时使用-depth选项,那么-prune将被find命令忽略。
    -user   按照文件属主来查找文件。
    -group  按照文件所属的组来查找文件。
    -mtime -n +n  按照文件的更改时间来查找文件, - n表示文件更改时间距现在n天以内,+ n表示文件更改时间距现在n天以前。find命令还有-atime和-ctime 选项,但它们都和-m time选项。
    -nogroup  查找无有效所属组的文件,即该文件所属的组在/etc/groups中不存在。
    -nouser   查找无有效属主的文件,即该文件的属主在/etc/passwd中不存在。
    -newer file1 ! file2  查找更改时间比文件file1新但比文件file2旧的文件。
    -type  查找某一类型的文件,诸如:
    b - 块设备文件。
    d - 目录。
    c - 字符设备文件。
    p - 管道文件。
    l - 符号链接文件。
    f - 普通文件。
    -size n:[c] 查找文件长度为n块的文件,带有c时表示文件长度以字节计。-depth:在查找文件时,首先查找当前目录中的文件,然后再在其子目录中查找。
    -fstype:查找位于某一类型文件系统中的文件,这些文件系统类型通常可以在配置文件/etc/fstab中找到,该配置文件中包含了本系统中有关文件系统的信息。
    -mount:在查找文件时不跨越文件系统mount点。
    -follow:如果find命令遇到符号链接文件,就跟踪至链接所指向的文件。
    -cpio:对匹配的文件使用cpio命令,将这些文件备份到磁带设备中。

    另外,下面三个的区别:

    -amin n   查找系统中最后N分钟访问的文件
    -atime n  查找系统中最后n*24小时访问的文件
    -cmin n   查找系统中最后N分钟被改变文件状态的文件
    -ctime n  查找系统中最后n*24小时被改变文件状态的文件
    -mmin n   查找系统中最后N分钟被改变文件数据的文件
    -mtime n  查找系统中最后n*24小时被改变文件数据的文件

    -------------------------------------------------------------------------------------------------------------------------
    6.磁盘空间
    df -h:显示已经挂载的磁盘分区列表
    ls -lSr|more:以尺寸大小排列文件和目录
    du -sh dir1:估算dir1已使用的磁盘空间
    du -sk * |sort -rn:以容量大小为依据依次显示文件和目录的大小
    -------------------------------------------------------------------------------------------------------------------------
    7.whoami、w、id、lastlog、users、groups

    id: 打印出自己的UID以及GID.(UID:用户身份唯一标识.GID:用户组身份唯一标识.
    每一个用户只能有一个唯一的UID和GID.)
    w:查看用户登录信息
    last:最近一个月用户登录情况
    lastlog 检查某特定用户上次登录的时间,并格式化输出上次登录日志/var/log/lastlog的内容 
    whoami:确认自己身份. 

    -------------------------------------------------------------------------------------------------------------------------
    8.history和!!
    history:显示用户过去命用的命令 
    !!执行最近一次的命
    -------------------------------------------------------------------------------------------------------------------------
    9.uname 查看linux系统信息 
    参数:-a 所有信息 -r 版本号 -n 主机名
    -------------------------------------------------------------------------------------------------------------------------
    10.
    建立软连接 
    ln [-sf] source target 
    ln souce-file hard-link 
    ln -sf source-file soft-link 
    s表示软连接,f表示,若有同名文件在,则将它覆盖过去. 
    注:硬链接不能为目录创建,只有文件才能创建硬链接。 
    -------------------------------------------------------------------------------------------------------------------------
    11.
    查看目录 
       du -sh   目录或者文件 
       du -m    du系统默认输出是以KB,以参数-m表示以MB显示. 
       cat /etc/fstab   查看分区列表 
       fdisk -l   
       df -h 
       df -ah  
    -------------------------------------------------------------------------------------------------------------------------
    12.查看linux系统占用的资源(top,free,uptime) 
       top   查看后台程序,监控系统性能 
       top -d 2 每两秒列新一次 
       top -d -2 -p3690 查看某个PID 
       top -b -n 2 >/tmp/top.txt 将top的信息进行 2 次,然后将结果输出到/tmp/top.txt 
        
       free -m 查看系统内存使用情况  
       uptime  显示目前系统开机时间(查看开机多久,多少人登陆,过去 1,5,15 分钟系统的负载)
    -------------------------------------------------------------------------------------------------------------------------
    13.文件比软件: 
    cmp  cmp(“compare”的缩写)命令用来简要指出两个文件是否存在差异,它的使用
    权限是所有用户 
    diff diff命令用于两个文件之间的比较,并指出两者的不同,它的使用权限是所有用户 
    -------------------------------------------------------------------------------------------------------------------------
    14.远程操作与文件传输 
    ssh user@remote.machine 
    scp user@remote.machine:/remote/path /local/path 
    scp /local/path user@remote.machine:/remote/path 
    -------------------------------------------------------------------------------------------------------------------------
    15.编译c/c++文件 
    gcc 
    gcc -v 查看GCC版本 
    gcc -o test test.c 2>errfile 编译test.c时若有错误信息,则将错误信息重定向到errfile  
    -------------------------------------------------------------------------------------------------------------------------
    16.如何改变启动模式运行级别 
    vi /etc/inittab 
    将 5 改成 3,启动后就可以变成字符模式。 
    startx 或者 init 5 就可以进入图形化界面. 
    runlevel 显示当前运行级别  
    -------------------------------------------------------------------------------------------------------------------------
    17.dmesg |more 显示开机信息(查看系统启动时硬件信息)
    -------------------------------------------------------------------------------------------------------------------------
    18.模块相关的命令 
       lsmod 显示已经载入系统的模块 
       depmod 分析可载入系统的相依性 
       modinfo 显示kernel模块的信息 
       insmod  载入模块 
       modprobe 自动处理可载入模块 
       rmmod    删除模块 
    -------------------------------------------------------------------------------------------------------------------------
    19.chkconfig --list 显示各种服务的状态,利用chkconfig可以轻松管理init脚本.
    -------------------------------------------------------------------------------------------------------------------------
    20.linux的几种解压缩命令 
       compress aaa  将aaa文件压缩成为aaa.Z 
       compress -d aaa.z 将aaa.z文件压缩成aaa 
        
       gzip aaa 压缩命令 
       gzip -d aaa.gz  解压命令 
       bzip2 -z filename 压缩,同上加-d参数解压 
       bzcat filename.bz 查看压缩文件内容 
       tar  czvf aaa.tar.gz  aaa 将目录aaa压缩成aaa.tar.gz 
       tar -N '2007/03/01' -zcvf home.tar.gz /home 在/home当中,比 2007/03/01 新的文件才备份. 
       tar --exclude /home/cao -zxvf myfile.tar.gz /home/* /etc 要备份/home,/etc,但不要/home/cao 
       cd /tmp; tar -cvf -/etc | tar -xvf - 将/etc/打包后直接解开/tmp底下,而不产生文件. 
       tar zxvf aaa.tar.gz 解压缩命令. 
       tar jxvf aaa.tar.bz2 解压命令 
       tar zxvf aaa.tar.gz -C /var/www 将aaa.tar.gz解压到/var/www目录下 
    -------------------------------------------------------------------------------------------------------------------------
    21.网络命令 
       ifconfig 显示或设置网络设备,可以查看当前ip,类似于windows里的ipconfig 

    查看IP地址:[root@vshi-template shell]# ifconfig eth0|grep "inet addr"|awk -F: '{print $2}'|awk -F'  ' '{print $1}'
    192.168.108.168

    要赋给

    eth0

    接口

    IP

    地址

    207.164.186.2

    并且马上激活它,使用下面命令:

     

    #fconfig eth0 210.34.6.89 netmask 255.255.255.128 broadcast 210.34.6.127 

    要赋给

    eth0

    接口

    IP

    地址

    207.164.186.2

    并且马上激活它,使用下面命令:

     

    #fconfig eth0 210.34.6.89 netmask 255.255.255.128 broadcast 210.34.6.127 

    要赋给eth0接口IP地址207.164.186.2,并且马上激活它,使用下面命令:  
    ifconfig eth0 210.34.6.89 netmask 255.255.255.128 broadcast 210.34.6.127 



       service network restart(/etc/rc.d/init.d/network restart) 重启网卡 
       ifdown eth0 关闭网卡 
       ifup eth0 开启网卡 
       route -n 查看路由表 
       route add -net 192.168.20.1 netmask 255.255.255.0 dev eth0 
        
       netstat 查看网络连接情况 
       netstat -i 显示网卡运行情况 
       netstat -r 查看主机的路由列表 
        
       traceroute 
        
       hostname 显示主机名 
       hostname -i 显示当前主机名的
    -------------------------------------------------------------------------------------------------------------------------
    22.数据库启动
    启动mysql: 
    service mysqld start(/etc/rc.d/init.d/mysqld start) 
    mysql -uroot -p 输入密码即可操作mysql数据库.  
    启动Oracle 
    su - oracle 
    $lsnrctl stop 
    $lsnrctl start 
    sqlplus /nolog 
    conn /as sysdba(connected) 
    startup   
    -------------------------------------------------------------------------------------------------------------------------
    23.安装软件包 
    rpm包安装: 
    rpm -ivh xxx.rpm         安装rpm包 
    rpm -qa --last | less    根据安装日期显示已经安装的包 
    rpm -qa |grep mysql -i   查询系统是否安装mysql包(-i,忽略大小写) 
    rpm -e                   删除安装的软件包 
    rpm -e mysql* --nodpes   强制删除相关的软件包 
    rpm --test               测试安装 
    rpm -qi                  查询mysql套件的说明资料 
    rpm -qpl xxx.rpm         查看rpm包内含的内容. 
    rpm -qc[d]               设定档与说明档 
    rpm -Uvh                 升级安装 
    rpmbuild --bb SPECS/xxx.spec 重新装将xxx.spec编译成rpm包. 
    rpmbuild --rebuild packagename.src.rpm 重新把.src.rpm编译成rpm包. 
     
    源码编译安装(经典) 
    ./configure              检查系统信息(./configure --help | more 帮助信息,可以看到相
    关的参数设定) 
    make clean               清除之前留下的文件 
    make                     编译 
    make install             安装 
    注:源码包安装,一般先将文件解压,安装过程大致上面几步,具体说明一般见解压后目录
    里的(INSTALL,READEME说明.)  
    -------------------------------------------------------------------------------------------------------------------------
    24. iostat(IO性能监控工具)

    $iostat -d -k 1 10
    -d :显示设备(磁盘)使用状态;
    -k:某些使用block为单位的列强制使
    用Kilobytes为单位;
    1 10:表示数据显示每隔1秒刷新一次,共显示10次;

    -x: 我们可以获得更多统计信息;
    -c : 获取cpu部分状态值:

    tps:该设备每秒的传输次数(Indicate the number of transfers per second that were issued to the device.)。“一次传输”意思是“一次I/O请求”。多个逻辑请求可能会被合并为“一次I/O请求”。“一次传输”请求的大小是未知的。

    kB_read/s:每秒从设备(drive expressed)读取的数据量;kB_wrtn/s:每秒向设备(drive expressed)写入的数据量;kB_read:读取的总数据量;kB_wrtn:写入的总数量数据量;这些单位都为Kilobytes。

    $iostat -d -k 1 10 #查看TPS和吞吐量信息

    iostat -d -x -k 1 10 #查看设备使用率(%util)、响应时间(await)
    iostat -c 1 10 #查看cpu状态

    -------------------------------------------------------------------------------------------------------------------------
    25. tcpdump(抓包工具)

    介绍几种典型的tcpdump命令的输出信息

    (1) 数据链路层头信息
    使用命令:
    #tcpdump --e host ICE
    ICE 是一台装有linux的主机。它的MAC地址是0:90:27:58:AF:1A H219是一台装有Solaris的SUN工作站。它的MAC地址是8:0:20:79:5B:46; 上一条命令的输出结果如下所示:

    21:50:12.847509 eth0 < 8:0:20:79:5b:46 0:90:27:58:af:1a ip 60: h219.33357 > ICE.  telne t 0:0(0) ack 22535 win 8760 (DF)

    21:50:12是显示的时间, 847509是ID号,eth0 <表示从网络接口eth0接收该分组, eth0 >表示从网络接口设备发送分组, 8:0:20:79:5b:46是主机H219的MAC地址, 它表明是从源地址H219发来的分组. 0:90:27:58:af:1a是主机ICE的MAC地址, 表示该分组的目的地址是ICE。 ip 是表明该分组是IP分组,60 是分组的长度, h219.33357 > ICE. telnet 表明该分组是从主机H219的33357端口发往主机ICE的 TELNET(23)端口。 ack 22535 表明对序列号是222535的包进行响应。 win 8760表明发 送窗口的大小是8760。

    (2) ARP包的tcpdump输出信息

    使用命令:
    #tcpdump arp

    得到的输出结果是:

    22:32:42.802509 eth0 > arp who-has route tell ICE (0:90:27:58:af:1a)
    22:32:42.802902 eth0 < arp reply route is-at 0:90:27:12:10:66 (0:90:27:58:af:1a)

    22:32:42是时间戳, 802509是ID号, eth0 >表明从主机发出该分组,arp表明是ARP请求包, who-has route tell ICE表明是主机ICE请求主机route的MAC地址。 0:90:27:58:af:1a是主机 ICE的MAC地址。

    (3) TCP包的输出信息

    用tcpdump捕获的TCP包的一般输出信息是:

    src > dst: flags data-seqno ack window urgent options

    src > dst:表明从源地址到目的地址, flags是TCP报文中的标志信息,S 是SYN标志, F (FIN), P (PUSH) , R (RST) “.” (没有标记); data-seqno是报文中的数据 的顺序号, ack是下次期望的顺序号, window是接收缓存的窗口大小, urgent表明 报文中是否有紧急指针。 Options是选项。

    (4) UDP包的输出信息

    用tcpdump捕获的UDP包的一般输出信息是:

    route.port1 > ICE.port2: udp lenth

    UDP十分简单,上面的输出行表明从主机route的port1端口发出的一个UDP报文 到主机ICE的port2端口,类型是UDP, 包的长度是lenth。


    举例

    (1) 想要截获所有210.27.48.1 的主机收到的和发出的所有的分组:
    #tcpdump host 210.27.48.1

    (2) 想要截获主机210.27.48.1 和主机210.27.48.2或210.27.48.3的通信,使用命令(注意:括号前的反斜杠是必须的):
    #tcpdump host 210.27.48.1 and (210.27.48.2 or 210.27.48.3 )

    (3) 如果想要获取主机210.27.48.1除了和主机210.27.48.2之外所有主机通信的ip包,使用命令:
    #tcpdump ip host 210.27.48.1 and ! 210.27.48.2

    (4) 如果想要获取主机192.168.228.246接收或发出的ssh包,并且不转换主机名使用如下命令:
    #tcpdump -nn -n src host 192.168.228.246 and port 22 and tcp

    (5) 获取主机192.168.228.246接收或发出的ssh包,并把mac地址也一同显示:
    # tcpdump -e src host 192.168.228.246 and port 22 and tcp -n -nn

    (6) 过滤的是源主机为192.168.0.1与目的网络为192.168.0.0的报头:
    tcpdump src host 192.168.0.1 and dst net 192.168.0.0/24

    (7) 过滤源主机物理地址为XXX的报头:
    tcpdump ether src 00:50:04:BA:9B and dst……
    (为什么ether src后面没有host或者net?物理地址当然不可能有网络喽)。

    (8) 过滤源主机192.168.0.1和目的端口不是telnet的报头,并导入到tes.t.txt文件中:
    Tcpdump src host 192.168.0.1 and dst port not telnet -l > test.txt

    ip icmp arp rarp 和 tcp、udp、icmp这些选项等都要放到第一个参数的位置,用来过滤数据报的类型。

    例题:如何使用tcpdump监听来自eth0适配卡且通信协议为port 22,目标来源为192.168.1.100的数据包资料?

    答:tcpdump -i eth0 -nn port 22 and src host 192.168.1.100

    例题:如何使用tcpdump抓取访问eth0适配卡且访问端口为tcp 9080?

    答:tcpdump -i eth0 dst 172.168.70.35 and tcp port 9080

    例题:如何使用tcpdump抓取与主机192.168.43.23或着与主机192.168.43.24通信报文,并且显示在控制台上

    tcpdump -X -s 1024 -i eth0 host (192.168.43.23 or 192.168.43.24) and  host 172.16.70.35


    -------------------------------------------------------------------------------------------------------------------------
    26.vmstat
    作用:可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况
    一般vmstat工具的使用是通过两个数字参数来完成的,第一个参数是采样的时间间隔数,单位是秒,第二个参数是采样的次数。

    root@ubuntu:~# vmstat 2 1 procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
     r  b   swpd   free   buff  cache   si   so    bi    bo in cs us sy id wa 1 0 0 3498472 315836 3819540 0 0 0 1 2 0 0 0 100 0

    2表示每个两秒采集一次服务器状态,1表示只采集一次。

    r 表示运行队列(就是说多少个进程真的分配到CPU),我测试的服务器目前CPU比较空闲,没什么程序在跑,当这个值超过了CPU数目,就会出现CPU瓶颈了。这个也和top的负载有关系,一般负载超过了3就比较高,超过了5就高,超过了10就不正常了,服务器的状态很危险。top的负载类似每秒的运行队列。如果运行队列过大,表示你的CPU很繁忙,一般会造成CPU使用率很高。

    b 表示阻塞的进程,这个不多说,进程阻塞,大家懂的。

    swpd 虚拟内存已使用的大小,如果大于0,表示你的机器物理内存不足了,如果不是程序内存泄露的原因,那么你该升级内存了或者把耗内存的任务迁移到其他机器。

    free   空闲的物理内存的大小,我的机器内存总共8G,剩余3415M。

    buff   Linux/Unix系统是用来存储,目录里面有什么内容,权限等的缓存,我本机大概占用300多M

    cache cache直接用来记忆我们打开的文件,给文件做缓冲,我本机大概占用300多M(这里是Linux/Unix的聪明之处,把空闲的物理内存的一部分拿来做文件和目录的缓存,是为了提高 程序执行的性能,当程序使用内存时,buffer/cached会很快地被使用。)

    si  每秒从磁盘读入虚拟内存的大小,如果这个值大于0,表示物理内存不够用或者内存泄露了,要查找耗内存进程解决掉。我的机器内存充裕,一切正常。

    so  每秒虚拟内存写入磁盘的大小,如果这个值大于0,同上。

    bi  块设备每秒接收的块数量,这里的块设备是指系统上所有的磁盘和其他块设备,默认块大小是1024byte,我本机上没什么IO操作,所以一直是0,但是我曾在处理拷贝大量数据(2-3T)的机器上看过可以达到140000/s,磁盘写入速度差不多140M每秒

    bo 块设备每秒发送的块数量,例如我们读取文件,bo就要大于0。bi和bo一般都要接近0,不然就是IO过于频繁,需要调整。

    in 每秒CPU的中断次数,包括时间中断

    cs 每秒上下文切换次数,例如我们调用系统函数,就要进行上下文切换,线程的切换,也要进程上下文切换,这个值要越小越好,太大了,要考虑调低线程或者进程的数目,例如在apache和nginx这种web服务器中,我们一般做性能测试时会进行几千并发甚至几万并发的测试,选择web服务器的进程可以由进程或者线程的峰值一直下调,压测,直到cs到一个比较小的值,这个进程和线程数就是比较合适的值了。系统调用也是,每次调用系统函数,我们的代码就会进入内核空间,导致上下文切换,这个是很耗资源,也要尽量避免频繁调用系统函数。上下文切换次数过多表示你的CPU大部分浪费在上下文切换,导致CPU干正经事的时间少了,CPU没有充分利用,是不可取的。

    us 用户CPU时间,我曾经在一个做加密解密很频繁的服务器上,可以看到us接近100,r运行队列达到80(机器在做压力测试,性能表现不佳)。

    sy 系统CPU时间,如果太高,表示系统调用时间长,例如是IO操作频繁。

    id  空闲 CPU时间,一般来说,id + us + sy = 100,一般我认为id是空闲CPU使用率,us是用户CPU使用率,sy是系统CPU使用率。

    wt 等待IO CPU时间。

    -------------------------------------------------------------------------------------------------------------------------
    27.sudo

    一、特点
    # 1. sudo能够限制指定用户在指定主机上运行某些命令。
    # 2. sudo可以提供日志,忠实地记录每个用户使用sudo做了些什么,并且能将日志传到中心主机或者日志服务器。
    # 3. sudo为系统管理员提供配置文件,允许系统管理员集中地管理用户的使用权限和使用的主机。它默认的存放位置是/etc/sudoers。
    # 4.sudo使用时间戳文件来完成类似“检票”的系统。当用户执行sudo并且输入密码后,用户获得了一张默认存活期为5分钟的“入场券”(默认值可以在编译的时候改变)。超时以后,用户必须重新输入密码。

    二、命令
    sudo的配置都记录在/etc/sudoers文件中。配置文件指明哪些用户可以执行哪些命令。要使用sudo,用户 必须提供一个指定用户名和密码。注意:sudo需要的不是目标用户的密码,而是执行sudo的用户的密码。如果不在sudoers中的用户通过sudo执 行命令,sudo会向管理员报告这一事件。用户可以通过sudo -v来查看自己是否是在sudoers 之中。如果是,它还可以更新你的“入场券”上的时间;如果不是,它会提示你,但不会通知管理员。


    下面我们再来看一下sudo其它常用的一些参数:

    选项                                                       含义  作用
    sudo-hHelp                                            列出使用方法,退出。
    sudo-VVersion                                        显示版本信息,并退出。
    sudo-lList                                               列出当前用户可以执行的命令。只有在sudoers里的用户才能使用该选项。
    sudo-uusername#uidUser                      以指定用户的身份执行命令。后面的用户是除root以外的,可以是用户名,也可以是#uid。

    sudo-kKill                                               清除“入场卷”上的时间,下次再使用sudo时要再输入密码。

    sudo-KSurekill与-k                                  类似,但是它还要撕毁“入场卷”,也就是删除时间戳文件。

    sudo-bcommandBackground                  在后台执行指定的命令。

    sudo-ppromptcommandPrompt             可以更改询问密码的提示语,其中%u会代换为使用者帐号名称,%h会显示主机名称。非常人性化的设计。
    sudo-efileEdit                                         不是执行命令,而是修改文件,相当于命令sudoedit。


    三、配置sudo

    配置sudo必须通过编辑/etc/sudoers文件,而且只有超级用户才可以修改它,还必须使用visudo编辑。之所以使用visudo有两个原因,一是它能够防止

    两个用户同时修改它;二是它也能进行有限的语法检查。所以,即使只有你一个超级用户,你也最好用visudo来检查一下语法。

    visudo默认的是在vi里打开配置文件,用vi来修改文件。我们可以在编译时修改这个默认项。visudo不会擅自保存带有语法错误的配置文件,它会提示你出现的问题,并询问该如何处理,

    foobarALL=(ALL)ALL

    第一个ALL是指网络中的主机,我们后面把它改成了主机名,它指明
    foobar可以在此主机上执行后面的命令。第二个括号里的ALL是指目标用户,也就是以谁的身份去执行命令。最后一个
    ALL当然就是指命令名了。例如,我们想让foobar用户在linux主机上以jimmy或rene的身份执行kill命令,这样编写配置文件:


    foobarlinux=(jimmy,rene)/bin/kill
    但这还有个问题,foobar到底以jimmy还是rene的身份执行?这时我们应该想到了sudo-u了,它正是用在这种时候。foobar可以使用sudo-ujimmykillPID或者sudo-urenekillPID,但这样挺麻烦,其实我们可以不必每次加-u,把rene或jimmy设为默认的目标用户即可。再在上面加一行:

    Defaults:foobarrunas_default=rene
    Defaults后面如果有冒号,是对后面用户的默认,如果没有,则是对所有用户的默认。就像配置文件中自带的一行:

    Defaultsenv_reset
    另一个问题是,很多时候,我们本来就登录了,每次使用sudo还要输入密码就显得烦琐了。我们可不可以不再输入密码呢?当然可以,我们这样修改配置文件:

    foobarlocalhost=NOPASSWD:/bin/cat,/bin/ls


    -------------------------------------------------------------------------------------------------------------------------
    28.alias
    作用:设置指令的别名
    语法:alias 别名=命令全名
    例如:alias ll=ls -l
    设置文件:~/.bash_profile或.profile中

    -------------------------------------------------------------------------------------------------------------------------
    29.crontab
    作用:设置例行任务

    时程表的格式如下:
    f1 f2 f3 f4 f5 program

    其中 f1 是表示分钟,f2 表示小时,f3 表示一个月份中的第几日,f4 表示月份,f5 表示一个星期中的第几天。program 表示要执行的程式。

    当 f1 为 * 时表示每分钟都要执行 program,f2 为 * 时表示每小时都要执行程式,其余类推

    当 f1 为 a-b 时表示从第 a 分钟到第 b 分钟这段时间内要执行,f2 为 a-b 时表示从第 a 到第 b 小时都要执行,其余类推

    当 f1 为 */n 时表示每 n 分钟个时间间隔执行一次,f2 为 */n 表示每 n 小时个时间间隔执行一次,其余类推

    当 f1 为 a, b, c,... 时表示第 a, b, c,... 分钟要执行,f2 为 a, b, c,... 时表示第 a, b, c...个小时要执行,其余类推

    使用者也可以将所有的设定先存放在档案 file 中,用 crontab file 的方式来设定时程表。

    由于unix版本不一样,所以部分语法有差别,例如在hp unix aix 中设定间隔执行如果采用*/n 方式将出现语法错误,在这类unix中 ,间隔执行只能以列举方式,

    -------------------------------------------------------------------------------------------------------------------------
    30.sort
    作用:排序

    -------------------------------------------------------------------------------------------------------------------------
    31.uniq
    作用:
    检查及删除文本文件中重复出现的行列

    参  数:
      -c--count   在每列旁边显示该行重复出现的次数。
      -d--repeated   仅显示重复出现的行列。
      -f<栏位>--skip-fields=<栏位>   忽略比较指定的栏位。
      -s<字符位置>--skip-chars=<字符位置>   忽略比较指定的字符。
      -u--unique   仅显示出一次的行列。
      -w<字符位置>--check-chars=<字符位置>   指定要比较的字符。
      --help   显示帮助。
      --version   显示版本信息。


    -------------------------------------------------------------------------------------------------------------------------
    32.wc
    作用:计算字数

    补充说明:利用wc指令我们可以计算文件的Byte数、字数、或是列数,若不指定文件名称、或是所给予的文件名为“-”,则wc指令会从标准输入设备读取数据。
    参  数:
    -c--bytes--chars   只显示Bytes数。
    -l--lines   只显示列数。
    -w--words   只显示字数。
    --help   在线帮助。
    --version   显示版本信息。

    -------------------------------------------------------------------------------------------------------------------------
    33.sync、rsync
    sync作用:强制将内存中的文件缓冲内容写到磁盘。
    rsync作用:远程同步文件,
    可以镜像保存整个目录树和文件系统。可以很容易做到保持原来文件的权限、时间、软硬链接等等。

    服务器端启动

    usr/bin/rsync --daemon --config=/etc/rsyncd/rsyncd.conf
    可能需要root权限运行.
    /etc/rsyncd/rsyncd.conf 是你刚才编辑的rsyncd.conf的位置.
    也可以在/etc/rc.d/rc.local里加入让系统自动启动等.

    客户端同步

    rsync -avzP nemo@192.168.10.1::nemo /backup
    说明:
    -a 参数,相当于-rlptgoD,-r 是递归 -l 是链接文件,意思是拷贝链接文件;-p 表示保持文件原有权限;-t 保持文件原有时间;-g 保持文件原有用户组;-o 保持文件原有属主;-D 相当于块设备文件;
    -z 传输时压缩;
    -P 传输进度;
    -v 传输时的进度等信息,和-P有点关系,自己试试。可以看文档;
    可参见:http://www.cnblogs.com/itech/archive/2009/08/10/1542945.html

    -------------------------------------------------------------------------------------------------------------------------
    34.tee
    功能说明:读取标准输入的数据,并将其内容输出成文件。
    语  法:tee [-ai][--help][--version][文件...]
    补充说明:tee指令会从标准输入设备读取数据,将其内容输出到标准输出设备,同时保存成文件。

    参  数:
    -a或--append  附加到既有文件的后面,而非覆盖它.
    -i-i或--ignore-interrupts  忽略中断信号。
    --help  在线帮助。
    --version  显示版本信息。

    [root@localhost ~]# who | tee who.out
    root     pts/0        2009-02-17 07:47 (123.123.123.123)
    [root@localhost ~]# cat who.out
    root     pts/0        2009-02-17 07:47 (123.123.123.123)
    [root@localhost ~]# pwd | tee -a who.out
    /root
    [root@localhost ~]# cat who.out
    root     pts/0        2009-02-17 07:47 (123.123.123.123)
    /root
    [root@localhost ~]# 

    -------------------------------------------------------------------------------------------------------------------------

    -------------------------------------------------------------------------------------------------------------------------

    -------------------------------------------------------------------------------------------------------------------------

    -------------------------------------------------------------------------------------------------------------------------

    -------------------------------------------------------------------------------------------------------------------------






















  • 相关阅读:
    BZOJ3224普通平衡树——旋转treap
    我有一个梦想
    Python自动化测试入门
    Java为何这么难学?
    jmeter正则表达式书写
    fiddler抓包后Jmeter实现登录接口
    JMeter如何使用用户定义的变量
    第一篇博客说明
    React笔记_(5)_react语法4
    React笔记_(4)_react语法3
  • 原文地址:https://www.cnblogs.com/xialiaoliao0911/p/7524029.html
Copyright © 2011-2022 走看看