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 ~]# 

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

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

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

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

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






















posted @ 2017-04-18 14:06  foreverfriends  阅读(241)  评论(0编辑  收藏  举报