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 用户名
二者的区别:
(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命令用于两个文件之间的比较,并指出两者的不同,它的使用权限是所有用户
-------------------------------------------------------------------------------------------------------------------------
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 -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作用:远程同步文件,可以镜像保存整个目录树和文件系统。可以很容易做到保持原来文件的权限、时间、软硬链接等等。
服务器端启动
客户端同步
-------------------------------------------------------------------------------------------------------------------------
34.tee
语 法:tee [-ai][--help][--version][文件...]
补充说明:tee指令会从标准输入设备读取数据,将其内容输出到标准输出设备,同时保存成文件。
参 数:
-a或--append 附加到既有文件的后面,而非覆盖它.
-i-i或--ignore-interrupts 忽略中断信号。
--help 在线帮助。
--version 显示版本信息。
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 ~]#
-------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------