第3章 第3周课前测试考试题

3.1 取出文件的访问权限掩码

第1题如何取得/etiantian 文件的权限对应的数字内容,如-rw-r--r-- 为 644,要求使用命令取得644 这样的数字。

思路:

1.利用cut命令切割不同的字段出来,再利用tr命令将字母逐个转化为数字,再利用awk将不同的域相加后,再输出结果

2.stat命令可以查看到文件的详细信息,再从内容里面过滤出访问权限掩码

解答:

准备练习素材:

[root@lb01 ~]# touch /etiantian
[root@lb01 ~]# ll /etiantian # 看文件的属性
-rw-r--r-- 1 root root 0 2016-08-26 12:17 /etiantian
 

方法一:cut + tr + awk

[root@lb01 ~]# ls -l /etiantian |cut -c 2-10 
rw-r--r--# 先将文件的第2到第10个字符切割出来
[root@lb01 ~]# ls -l /etiantian |cut -c 2-10|tr "rwx-" "4210"
420400400# 将这几个特殊的字符逐个替换为数字
[root@lb01 ~]# ls -l /etiantian |cut -c 2-10|tr "rwx-" "4210"|awk -F '' '{print $1+$2+$3""$4+$5+$6""$7+$8+$9""}'
644
 

方法二:stat + sed

[root@lb01 ~]# stat /etiantian # stat命令查看文件的详细属性
  File: "/etiantian"
  Size: 0               Blocks: 0          IO Block: 4096   普通空文件
Device: 803h/2051d      Inode: 10908       Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2016-08-26 12:17:39.548934495 +0800
Modify: 2016-08-26 12:17:39.548934495 +0800
Change: 2016-08-26 12:17:39.548934495 +0800
[root@lb01 ~]# stat /etiantian |sed -nr 's#.*(0(.*)/-.*$#1#gp'
644
 

# -n表示取消默认输出,-r表示使用扩展的正则表达式。要查找的目标是644,所以思路是可以先把目标前面的内容分隔出来,再把目标后面的内容分隔出来,再将目标前后的内容都替换为空。而目标的内容可以用小括号括起来,替换时利用后向引用原理,将目标内容显示出来。

.*(0代表以任意字符开头,真到(0结束

(.*)代表任意的字符(即要查找的内容644)

/-.*$代表以/-开头,直到任意字符结束

1代表【(.*)】

方法三:stat + awk

[root@lb01 ~]# stat /etiantian |awk -F '[0/]+' 'NR==4 {print $2}'      
644
 

# -F指定分隔符,[]里面可以指定多个分隔符,+表示重复“1个或1个以上”前面的字符,[0/]因为644前面是一个0,后面是斜杠,所以指定隔符时可以指定这两个,这个查找时就能快速定位到这个目标;加NR==4后,只匹配到第4行

方法四:stat + grep

[root@lb01 ~]# stat /etiantian |grep -o .*/-
Access: (0644/-
# -o代表仅显示出匹配到的内容,先过滤出以任意字符开头,并且以【/-】结尾的字符串
# -o, --only-matching
[root@lb01 ~]# stat /etiantian |grep -o .*/-|grep -o [4-6]*
644
# -o再过滤出4-6的数字中的任意一个数字, *代表重复0个或多个前面的一个字符
 

方法五:stat 参数:-c

[root@lb01 ~]# stat -c %a /etiantian
644
# -c表示指定特定的格式输出,%a表示以八进制的方式显示访问权限
c   --format=FORMAT
    use the specified FORMAT instead of the default
%a  Access rights in octal(八进制)
 

总结:

1.三剑客都可以过滤出指定的内容,正则表达式的分隔符意义必须要理解,才能灵活应用。

2.如果一个命令的输出结果里有我们想要的内容,那么这条命令肯定会有参数单独把这个内容显示出来。

3.2 硬链接数

第2题linux 下通过 mkdir 命令创建一个新目录/oldboy/ett,它的硬链接数是多少,为什么?如果在/oldboy/ett 下面再创建一个目录 test。再问/oldboy/ett 的硬链接数是多少?为什么。

思路:

考查硬链接的原理,硬链接相当于一个文件的多个入口,互为硬链接的文件inode号是一样的。

解答:

第1个问:它的硬链接数是2个。

[root@lb01 ~]# mkdir /oldboy/ett -p
[root@lb01 ~]# ll -id /oldboy/ett/ /oldboy/ett/.
142179 drwxr-xr-x 2 root root 4096 2016-08-26 16:20 /oldboy/ett/
142179 drwxr-xr-x 2 root root 4096 2016-08-26 16:20 /oldboy/ett/.
# 点代表当前目录,这两个文件的inode号一样,所以是互为硬链接文件
 

第2个问:它的硬链接数是3个。

[root@lb01 ~]# mkdir /oldboy/ett/test
[root@lb01 ~]# ll -id /oldboy/ett/ /oldboy/ett/. /oldboy/ett/test/..
142179 drwxr-xr-x 3 root root 4096 2016-08-26 16:22 /oldboy/ett/
142179 drwxr-xr-x 3 root root 4096 2016-08-26 16:22 /oldboy/ett/.
142179 drwxr-xr-x 3 root root 4096 2016-08-26 16:22 /oldboy/ett/test/..
# 每个目录里,都有隐藏文件 . 和 ..   分别代表当前路径和上级目录
# 下一级目录里有一个..文件,用来指定上一级目录所在的路径
 

总结:

1.inode里存放的是文件的属性(inode大小共512个字节),但不存放文件的文件名,因为文件名是数据,文件名实际存放在上一级(父)目录里,所以删除文件时(即删除文件名),必须要看上一级目录inode里的文件权限属性值。

2.如果一个目录的硬链接数为2(目录本身,点),那么它肯定没有子目录。

3.如果一个目录的硬链接数为3(目录本身,点,下一级子目录点点),那么它肯定有1(3-2)个子目录。

4.如果一个目录的硬链接数为5(目录本身,点,下一级子目录点点),那么它肯定有3(5-2)个子目录。

5.互为硬链接的文件,inode号一样,相当于一个文件的多个入口,常用来备份重要的文件,但是,目录不能做硬链接。

6.软链接相当于快捷方式,它也是一个文件,所以inode号和源文件(或硬链接文件)的inode号是不一样的,它是直接链接到源文件上的,所以,如果删除了源文件,那么软链接就会失效。

7.删除一个文件的原理:源文件和硬链接文件都被删除,即文件的硬链接数为0,当文件被进程调用时,是无法被删除的,这时可以停掉这个进程或重启服务,就会释放进程。

3.3 取出IP

第3题请执行命令取出 linux 中 eth0 的 IP 地址(请用 cut,有能力者也可分别用 awk,sed 命令答)

思路:

(1)先把IP地址所在的行过滤出来,再用cut指定分隔符,输出指定的列

(2)利用sed过滤,需要配合正则表达式

(3)利用awk过滤

解答:

[root@lb01 ~]# ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 00:0C:29:55:2D:C1  
          inet addr:10.0.0.5  Bcast:10.0.0.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fe55:2dc1/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:104907 errors:0 dropped:0 overruns:0 frame:0
          TX packets:161744 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:85629519 (81.6 MiB)  TX bytes:12035082 (11.4 MiB)
 

方法一:grep + cut

[root@lb01 ~]# ifconfig eth0|grep "inet addr"|cut -d: -f2|cut -d " " -f1
10.0.0.5
# 先过滤出IP所在的行,利用cut切割不同的列(-d指定分隔符(冒号),-f指定输出的域),再指定分隔符(空格),只输出第一列
 

以下这种解法更加方便,但路径较长

[root@lb01 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0|grep IPADDR
IPADDR=10.0.0.5
[root@lb01 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0|grep IPADDR|cut -d= -f2
10.0.0.5
 

方法二:grep

[root@lb01 ~]# ifconfig eth0|grep -o "inet addr:[0-9.]*"
inet addr:10.0.0.5
[root@lb01 ~]# ifconfig eth0|grep -o "inet addr:[0-9.]*"|grep -o "[0-9.]*"
10.0.0.5
# 先过滤出以inet addr:开头,后面加数字和点,[0-9.]*代表重复0个或多个中括号里面的内容,-o代表只输出匹配到的内容
 

方法三:sed

[root@lb01 ~]# ifconfig eth0|sed -nr 's#^.*addr:(.*)  B.*$#1#gp'
10.0.0.5
# B的前面有两个空格  
sed过滤方法如下:
[root@lb01 ~]# ifconfig eth0|sed -nr '/inet addr/p'
          inet addr:10.0.0.5  Bcast:10.0.0.255  Mask:255.255.255.0
[root@lb01 ~]# ifconfig eth0|sed -nr '/inet addr/s#.*ddr:(.*)  B.*$#1#gp'
10.0.0.5
 

方法四 :awk

[root@lb01 ~]# ifconfig eth0|awk -F '[ :]+' 'NR==2 {print $4}'
10.0.0.5
 

方法五:三剑客配合

[root@lb01 ~]# ifconfig eth0|grep "inet addr"|awk -F '[ :]+' '{print $4}'
10.0.0.5
[root@lb01 ~]# ifconfig eth0|sed -n '2p'|awk -F '[ :]+' '{print $4}'
10.0.0.5
 

总结:

(1)grep过滤指定字符,再用cut切割不同的列

(2)sed取行很方便

(3)awk可以指定多分隔符

3.4 网卡及dns配置文件路径

第4题请给出默认情况 eth0 网卡配置文件的路径及客户端 DNS 的路径。

解答:

cat /etc/sysconfig/network-scripts/ifcfg-eth0 # 网卡配置文件路径
cat /etc/resolv.conf# 客户端DNS配置文件路径
 

总结:

如果网卡的配置文件里配置了DNS地址,而这个文件【/etc/resolv.conf】里也配置了DNS地址,那么以网卡的配置文件为准,即网卡的配置文件里的DNS地址优先级更高。

3.5 find&&sed查找替换

第5题查找当前目录下所有文件,并把文件中的 www.etiantian.org 字符串替换成 www.oldboy.cc。

思路:

利用find找出类型是文件的,再利用sed做查找替换对应的字符串

解答:

练习素材

echo "www.etiantian.org" >a.txt
echo "www.etiantian.org" >b.txt
echo "www.etiantian.org" >c.txt
 

两种方法都可以

[root@lb01 ~]# find ./ -type f|xargs sed -i  's#www.etiantian.org#www.etiantian.cc#g'
[root@lb01 ~]# find ./ -type f -exec sed -i 's#www.etiantian.org#www.etiantian.cc#g' {} ;
 

检查

[root@lb01 ~]# cat {a..c}.txt
www.etiantian.cc
www.etiantian.cc
www.etiantian.cc
 

总结:

sed查找替换时,先确定结果后再加-i参数

3.6 考查文件权限位属性

第6题如何赋予 oldboy 文件 -rw-r--r-x 权限属性。

思路:

1.可以直接用数字改(最佳)

2.也可以用字符修改

解答:

练习文件

touch oldboy
[root@lb01 ~]# ll oldboy
-rw-r--r-- 1 root root 0 2016-08-26 17:09 oldboy
 

方法一

[root@lb01 ~]# chmod 645 oldboy
[root@lb01 ~]# ll oldboy       
-rw-r--r-x 1 root root 0 2016-08-26 17:09 oldboy
 

方法二

[root@lb01 ~]# ll oldboy

-rw-r--r-x 1 root root 0 2016-08-26 17:09 oldboy

方法三

[root@lb01 ~]# chmod o=rx oldboy
[root@lb01 ~]# ll oldboy
-rw-r--r-x 1 root root 0 2016-08-26 17:09 oldboy
 

总结:

1.创建新文件时,默认的权限是:644

2.创建新目录时,默认的权限是:755

3.它们是由umask(权限掩码默认是022)控制的

4.文件默认用666-umask,目录默认用777-umask

5.还有setuid和setgid位,作用是无权执行二进制命令的用户,会以root身份或相应的属主/组身份去执行相对应的命令,典型的例子有:passwd  locate

6.chmod命令用来修改文件权限位,权限位字符的对应数字如下表

权限位字符对应数字

w4

r2

x1

-0

3.7 sudo su – 切换用户 

第7题执行下面命令时发现提示需要输入密码,请问提示输入的密码是哪个用户的密码。 

[test@oldboy ~]$ sudo su - oldboy
 

解答:普通用户test,想切换到普通用户oldboy,肯定要输入oldboy用户的密码。

3.8 考查echo参数-n:不换行输出

第8题请问在一个命令上加什么参数可以实现下面命令的内容在同一行输出。 

echo "oldboy";echo "oldboy"
 

解答:

[root@lb01 ~]# echo "oldboy";echo "oldboy"  
oldboy
oldboy
[root@lb01 ~]# echo -n "oldboy";echo "oldboy"  
oldboyoldboy
 

总结:

echo常用参数:

不换行输出   -n  do not output the trailing newlinetrailing newline(换行)
使用转义字符 -e  enable interpretation of backslash escapes
                 interpretation(翻译)backslash(反斜杠)escapes(转义符)
Tab键      	  horizontal tab(制表符)
回车      
  new line
 

3.9 考查date命令※※※※※

第9题请给出如下格式的 date 命令 例:11-02-26。再给出实现按周输出 比如:周六输出为 6,请分别给出命令。 

解答:

[root@oldboy ~]# date -s 20110226# 修改日期为2011-02-26
Sat Feb 26 00:00:00 CST 2011
[root@oldboy ~]# date +%y-%m-%d  # 设置日期的输出格式(year-month-day)   
11-02-26
[root@oldboy ~]# date +%w# 周六输出为6(week)
6
 

总结:

[root@oldboy ~]# date# 查看当前的日期和时间
Thu May 12 07:09:13 CST 2016
# 2016-5-12 周四 CST( Central Standard Time)美中央时区
 
[root@oldboy ~]# date -s "2016/05/23 08:03"
# -s(set)参数可以设置当前的日期与时间
Mon May 23 08:03:00 CST 2016
 
[root@oldboy ~]# date +%y-%m-%d# 年份只显示前2位
16-05-23
[root@oldboy ~]# date +%Y-%m-%d# 年份正常显示是%Y,只显示年份后两位是%y
2016-05-23
[root@oldboy ~]# date +%F# %F <==> %Y-%m-%d
2016-05-23
[root@oldboy ~]# date +%H:%M:%S# 完整的日期格式
08:47:31
[root@oldboy ~]# date +%X  # 完整的时间格式
08:47:37 AM
[root@oldboy ~]# date +%F %X# 日期 + 时间
2016-05-23 08:53:36 AM
 
[root@oldboy ~]# date +%F# 当前日期
2016-05-23
[root@oldboy ~]# date +%F -d "-1day"# 昨天
2016-05-22
[root@oldboy ~]# date +%F -d "-2day"# 前天
2016-05-21
[root@oldboy ~]# date +%F -d "+2day"# 后天
2016-05-25
-d, --date=STRINGdisplay time described by STRING, not ‘now’
用字符串内定义的格式显示时间描述,不是现在的时间
 
[root@oldboy /]# date +%H:%M:%S# 当前的时间
10:32:54
[root@oldboy /]# date +%X# 当前时间的简写
10:33:00 AM
[root@oldboy /]# date +%F-%H -d "+2hour"# 两个小时后
# %H这个参数必须加,否则就不显示时间(小时)格式了
2016-05-23-12
[root@oldboy /]# date +%F-%H -d "-2hour"# 两个小时前
2016-05-23-08
 

打包文件的案例

[root@oldboy ~]# tar zvcf test_`date +%F`.tar.gz ./test/ 
[root@oldboy ~]# tar zvcf test_$(date +%F).tar.gz ./test
[root@oldboy ~]# ll test_2016-05-23.tar.gz 
-rw-r--r--. 1 root root 204 May 23 09:03 test_2016-05-23.tar.gz
 

常用参数如下:

-s       # set参数可以设置当前的日期与时间
-d--date=STRINGdisplay time described by STRING, not ‘now’
         # 用字符串内定义的格式显示时间描述,不是现在的时间
%y     last two digits of year (00..99)# 年份最后2位:16
%Y     year# 年份正常格式:2016
%m     month (01..12)# 6月:06
%d     day of month (e.g, 01)# 5号:05
%F     full date; same as %Y-%m-%d# 完整的日期格式:2016-05-23
%X     locale’s time representation (e.g., 23:13:48)#完整的时间格式:23:13:48
%H     hour (00..23)# 早上8点:08
%M     minute (00..59)# 9分钟:09
%S     second (00..60)# 第5秒:05
%w     day of week (0..6); 0 is Sunday# 周六:6
 

3.10 全局变量

第10题当从 root 用户切到普通用户时,执行 ifconfig 会提示。 

[oldboy@student ~]$ ifconfig 
-bash: ifconfig: command not found # 提示:c58会遇到,c64没有此问题
 

请问这是为什么?如何解决,请给出详细解决过程。 

解答:

原因:没有带入全局变量。

解决办法:全路径执行命令。

3.11 date命令扩展

第11题扩展问题:打印三天前的日期格式如:2011-02-26 

解答:

[root@oldboy ~]# date +%F# 当前的日期
2016-05-23
[root@oldboy ~]# date +%Y-%m-%d -d "-3day"# 3天前的日期
2016-05-20
[root@oldboy ~]# date +%F -d "-3day"# 3天前的日期
2016-05-20
 

扩展:

[root@oldboy /]# date +%H:%M:%S# 当前的时间
10:32:54
[root@oldboy /]# date +%X# 当前的时间的简写
10:33:00 AM
[root@oldboy /]# date +%F-%H -d "+2hour"# 两个小时后
# %H这个参数必须加,否则就不显示时间(小时)格式了
2016-05-23-12
[root@oldboy /]# date +%F-%H -d "-2hour"# 两个小时前
2016-05-23-08
 

3.12 grep如何过滤空格

第12题已知/oldboy/test.txt 文件内容为: 

oldboy 
 
xizi
 
xiaochao
 

请问如何把文件中的空格过滤掉(要求命令行实现)。 

思路:

(1)利用字符点,匹配任意一个字符。

(2)先把空行过滤出来,再取反。

解答:

准备练习文件

cat >>/oldboy/test.txt<<EOF
oldboy
xizi
xiaochao
EOF
 

方法一:利用“.”过滤空格,点代表且只能代表任意一个字符

[root@lb01 ~]# grep . -n  /oldboy/test.txt
1:oldboy
3:xizi
5:xiaochao
 

方法二:过滤空行,再取反

[root@lb01 ~]# grep -vn "^$" /oldboy/test.txt
1:oldboy
3:xizi
5:xiaochao
 

总结:

1..     代表且只能代表任意一个字符

2.*     代表重复0个或多个前面的一个字符

3..*    匹配所有字符

4.^$     代表空行

5.-n     代表显示行号

6.-v     代表取反

3.13 grep 或 egrep过滤

第13题已知/oldboy/ett.txt 文件内容为: 

oldboy olldboooy 
test
 

请使用 grep 或 egrep 正则匹配的方式过滤出前两行内容。

解答:

准备练习文件

cat >>/oldboy/ett.txt <<EOF
oldboy olldboooy
test
EOF
 

方法一:

[root@lb01 ~]# grep -En "^o|^t" /oldboy/ett.txt
1:oldboy olldboooy
2:test
 

方法二:

[root@lb01 ~]# egrep -n --color "^o|^t" /oldboy/ett.txt 
1:oldboy olldboooy
2:test
 

总结:

1.^代表一行的开头

2.-n代表显示行号

3.-E代表使用扩展的正则表达式

3.14 考查6个目录结构知识

第14题请描述下列路径的内容是做什么的? 

/var/log/messages
/var/log/secure
/var/spool/clientmqueue
/proc/interrupts
/etc/fstab
/etc/profile
 

解答:

/var/log/messages系统信息默认日志文件,按周自动轮循。

/var/log/secure记录登陆系统存取信息的文件(不管认证成功还是认证失败都会记录),它是系统安全的日志文件,依赖于rsyglog服务开启。

/var/spool/clientmqueue当邮件服务未启动时,所有发给系统管理员的邮件都将堆放在此。

/proc/interrupts目前系统上面的 IRQ 分配状态。

/etc/fstab开机自动挂载系统,(所有分区)开机都会自动挂载。

/etc/profile系统全局环境变量永久生效的配置文件,用来定义别名以及PATH变量等。

3.15 快速查到 ifconfig 的全路径

第15题如何快速查到 ifconfig 的全路径(假如你不知道其路径),请给出命令。 

解答:

方法一:which - shows the full path of (shell) commands

[root@lb01 ~]# which ifconfig
/sbin/ifconfig
 

方法二:whereis - locate the binary, source, and manual page files for a command

[root@lb01 ~]# whereis ifconfig
ifconfig: /sbin/ifconfig /usr/share/man/man8/ifconfig.8.gz
 

方法三:locate - find files by name

[root@lb01 ~]# locate ifconfig
/sbin/ifconfig
/usr/sbin/pifconfig
/usr/share/man/de/man8/ifconfig.8.gz
/usr/share/man/fr/man8/ifconfig.8.gz
/usr/share/man/man8/ifconfig.8.gz
/usr/share/man/man8/pifconfig.8.gz
/usr/share/man/pt/man8/ifconfig.8.gz
 

总结:

1.which显示shell命令的全路径

2.whereis定位一个命令的二进制文件,源代码,命令的帮助文件(manual page files)

3.locate按名字找出文件(只能查updatedb库里内容,locate从/var/lib/mlocate/mlocate.db查找路径)

3.16 定时任务

第16题每周日上午 9:30 来老男孩 linux 培训上课(用/oldboy.sh 代替),请用 linux 定时任务命令表示。

思路:

1.先在命令行测试

2.编写脚本测试脚本

3.利用crontab -e 编辑定时任务的配置文件(/var/spool/cron/root)

4.测试crond

5.完成操作(如果有错误,应立马排错)

解答:

1.先在命令行测试

[root@lb01 ~]# echo "go to oldboy training to learn linux."
 

2.编写脚本测试脚本

[root@oldboy ~]# echo 'echo "go to oldboy training to learn linux."' >/oldboy.sh
[root@oldboy ~]# /bin/sh /oldboy.sh
go to oldboy training to learn linux.
 

3.利用crontab -e 编辑定时任务的配置文件

[root@oldboy ~]# crontab -e# 分 时 日 月 周
#remind task by ChenDianHu at 2016.5.26
30 09 * * 0 /bin/sh /oldboy.sh >/dev/null 2>&1
 

总结:

1.命令的执行最好用脚本来代替

2.执行脚本时使用绝对路径

3.利用crontab -e 编辑配置文件时,任务的书写尽量用复制

4.每一条任务最好加注释,结尾最好无输出(>/dev/null 2>&1)

3.17 如何查看当前有哪些用户在线的 linux 命令

第17题请给出查看当前哪些用户在线的 linux 命令。 

解答:

方法一:w - Show who is logged on and what they are doing

[root@oldboy ~]# w
 09:11:42 up 1 day,  5:29,  3 users,  load average: 0.00, 0.00, 0.00
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
root     tty1     -                11May16 18days  0.11s  0.11s -bash # 处于命令行
chen     pts/0    10.1.8.77        09:11   17.00s  0.02s  0.02s -bash # 处于命令行
root     pts/1    10.1.8.77        07:56    0.00s  0.27s  0.00s w# 正在执行命令w
 

方法二:who - show who is logged on

[root@oldboy ~]# who
root     tty1         2016-05-11 14:13
chen     pts/0        2016-05-30 09:11 (10.1.8.77)
root     pts/1        2016-05-30 07:56 (10.1.8.77)
 

方法三:users - print the user names of users currently logged in to the current host

[root@oldboy ~]# users
chen root root
 

方法四:last:show listing of last logged in users

[root@lb01 ~]# last|grep "still logged in"
root     pts/1        10.0.0.1         Fri Aug 26 10:50   still logged in   
root     pts/0        10.0.0.1         Thu Aug 25 23:44   still logged in
 

总结:

1.w       显示有哪个用户已登录系统,以及用户正在做的事

2.who       查看(登录)用户名,以及所启动的进程

3.users      打印输出登录服务器的用户名

4.last       显示最近登录的用户

5.lastlog     显示有哪些用户远程登录过系统

lastlog - reports the most recent login of all users or of a given user

3.18 帐户10内过期

第18题公司一开发人员申请对某一服务器 10 天的普通用户权限,请问你如何操作?

思路:

1.利用useradd 命令添加新用户时,指定-e参数即可。

2.可以利用chage命令查看用户的过期时间。

解答:

useradd chen -e `date +%F -d "+10day"`
 

检查

[root@lb01 ~]# chage -l chen
Last password change                                    : Aug 26, 2016
Password expires                                        : never
Password inactive                                       : never
Account expires                                         : Sep 05, 2016
Minimum number of days between password change          : 0
Maximum number of days between password change          : 99999
Number of days of warning before password expires       : 7
[root@lb01 ~]# date +%F
2016-08-26# 当前时间,10天后是9月5日
 

总结:

useradd参数

-e, --expiredate EXPIRE_DATE
    The date on which the user account will be disabled. The date is specified in the format YYYY-MM-DD.
-g  主组
-G  附加组
-d  指定家目录
-M  不创建家目录
-m  强制创建家目录
-u  指定uid
-s  指定shell,常用/sbin/nologin
chage - change user password expiry information
-l, --list
   Show account aging information.
 

3.19 linux关机和重启的命令

第19题请给出正确的关机和重启服务器的命令。 

解答:

服务器关机的命令如下:

init 0、halt、poweroff、shutdown -h 0  # 立刻关机
shutdown -h +10             # 十分钟后关机
shutdown -h 23:00            # 在23点时,关机
 

服务器重启的命令如下: 

init 6、reboot、shutdown -r now  # 立刻重启
shutdown -r +10           # 十分钟后重启
shutdown -r 23:00          # 在23点时,重启
 

总结:

1.shutdown命令只有拥有root权限才可以使用。

2.如果是通过shutdown命令关机或重启的话,可以用shutdown -c命令取消重启。

3.20 SecureCRT 命令行快捷键

第20题请写出下面 linux SecureCRT 命令行快捷键命令的功能? 

Ctrl + a
Ctrl + c
Ctrl + d
Ctrl + e
Ctrl + l
Ctrl + u  
Ctrl + k 
tab 
Ctrl+shift+c 
Ctrl+shift+v
 

解答:

快捷键         功能

Ctrl + a == home    将光标定位到行首

Ctrl + c     终止当前任务

Ctrl + d     注销当前用户

Ctrl + e == end     将光标定们到行尾

Ctrl + l         清屏

Ctrl + u     删除光标前面的内容

Ctrl + k     删除光标后面的内容

Ctrl + w     删除光标前面的单词(一个一个删)

tab         补全命令,提示帮助

Ctrl+shift+c     复制

Ctrl+shift+v     粘贴

Esc + .           调用上一次命令的文件路径