练习题三答案2
- 格式:docx
- 大小:33.76 KB
- 文档页数:5
1、如何得到当前已知目录/root/shizhi下所有的一级目录(不包含隐藏目录与目录下的子目录)如何解决问题的思路:1、颜色蓝色是目录白色是文件做不到2、使用ll命令查看时 d开头是目录–开头是文件3、find命令查找可以指定文件类型–type d4、使用ll命令查看时,第2列数字大于15、可以通过ls 命令的参数-F –p给不同的文件加上不同标识符方法1: [root@test2 shizhi]# tree -Ld 1方法2:[root@test2 shizhi]# ll |grep ^d[root@test2 shizhi]# ll |sed /^d/p –n[root@test2 shizhi]# ll |awk /^d/方法3:[root@test2 shizhi]# find /root/shizhi -maxdepth 1 -type d ! -name "shizhi"方法4:[root@test2 shizhi]# ll |awk '{if($2>1)print $0}'方法5:[root@test2 shizhi]# ls -F|grep /$ls–F –p2、当前目录在/root下,现在因需要切换到/tmp下,完成操作后,想要快速回root目录下。
要如何操作??(要求不能使用cd /root)[root@test2 /]# env |grep -i oldpwdOLDPWD=/tmp[root@test2 /]# cd - 答案/tmp[root@test2 tmp]# env |grep -i oldpwdOLDPWD=/3、现在要查看一个目录下的文件,但是目录下有很多文件(如ls /etc会显示很多页),要如何查看最新的文件?环境:touch 1.txt 2.txt[root@test2 etc]# ls–lrt-r 倒叙-t 按照修改时间排序4、已知一台服务器的服务日志按照天数保存在本地目录/app/logs下,由于空间不足现要求只能保存最近4天内的服务器数据日志,请问如何解决?(如apache服务)创建模拟环境使用脚本文档中的,创建日志脚本。
mkdir -p /app/logscd /app/logsfor n in `seq 6`;dodate -s "2017/06/$n";touchaccess_www_$(date +%F).log;donedate -s "2017/04/7 18:39:20"答案:[root@test2 logs]# find . -type f -mtime +4 |xargsrm -f5、调试系统服务器时,希望能够实时查看系统日志/var/log/messages的更新,要如何操作?(工作环境中/var/log/messages这个系统日志相当重要)方法一:tail –f /var/log/messages (常用)方法二:tailf/var/log/messages方法三:tail–F /var/log/messages-f 动态查看-F 动态查看,并且比f多一个断线重连6、打印配置文件nginx.conf内容的行号及内容,如何操作?创建模拟文件echo shizhi{01..05} |xargs -n 1 >nginx.conf方方法一:使用vim/vi编辑器编辑:set nu方方法二:[root@test2 logs]# nlnginx.conf方方法三:[root@test2 logs]# cat -n nginx.conf(最常用)方方法四:[root@test2 logs]# grep -n "." nginx.conf方方法五:[root@test2 logs]# less -N nginx.conf方方法六:[root@test2 logs]# awk '{print NR,$0}' nginx.conf7、如何统计/etc/services文件的行数?方法一:[root@test2 logs]# wc -l /etc/services (常用)方法二:题目6中的所有答案查看最后一行都可以得到结果常用在脚本中[root@test2 logs]# ps -ef|grepsshdroot 26143 1 0 Jun06 ? 00:00:00 /usr/sbin/sshdroot 27074 26143 0 Jun06 ? 00:00:05 sshd: root@pts/1root 27980 27078 0 00:29 pts/1 00:00:00 grepsshd[root@test2 logs]# ps -ef|grepsshd |grep -v greproot 26143 1 0 Jun06 ? 00:00:00 /usr/sbin/sshdroot 27074 26143 0 Jun06 ? 00:00:05 sshd: root@pts/1[root@test2 logs]# ps -ef|grepsshd |grep -v grep |wc -l2[root@test2 logs]# ps -ef |grephttpdroot 27994 27078 0 00:31 pts/1 00:00:00 grephttpd[root@test2 logs]# ps -ef |grephttpd |grep -v grep[root@test2 logs]# ps -ef |grephttpd |grep -v grep |wc -l[root@test2 logs]#以上:非0即表示服务已经启用,如果是0即表示该服务没有开启或没有安装8、安装完系统后,希望让sshd远程登录服务,仅在3级别上开机自启动,要如何操作?方法一:[root@test2 logs]# chkconfig --list sshd查看服务在运行级别下开启sshd 0:off 1:off 2:on 3:on 4:on 5:on 6:off[root@test2 logs]# chkconfigsshd off将该服务在所有运行级别下关闭[root@test2 logs]# chkconfig --list sshdsshd 0:off 1:off 2:off 3:off 4:off 5:off 6:off[root@test2 logs]# chkconfig --level 3 sshd on在3级别下开启该服务[root@test2 logs]# chkconfig --list sshdsshd 0:off 1:off 2:off 3:on 4:off 5:off 6:off方法二:/etc/rc.local[root@test2 logs]# chkconfigsshd off[root@test2 logs]# chkconfig --list sshdsshd 0:off 1:off 2:off 3:off 4:off 5:off 6:offroot@test2 logs]# echo 'service sshd start' >>/etc/rc.local[root@test2 logs]# tail -1 /etc/rc.localservicesshd start[root@test2 logs]#linux系统简易的开机流程:1、开机BIOS自检(检查硬件内存,cpu)根据开启顺序启动系统,默认是硬盘启动2、MBR引导去找硬盘0柱面0磁道1扇区的前446字节(一个完整的扇区有512字节),这446字节中记录系统引导程序,通过引导程序加载grub菜单,剩余66字节,66字节中64字位记录了分区信息,最后2个字节分区的结束标识符aa55。
3、gurb引导菜单(系统启动)/etc/grub.conf4、加载内核kernel5、启动init进程init是系统开机第一个启用的进程[root@test ~]# ps -ef |grepinit6、读取inittab文件,并且执行rc.sysinit脚本开机脚本rc.sysinit加载(主机名、开机自启动等等)通过/etc/inittab默认是3 ======> /etc/rc.d/rc3.d7、启动mingetty,进入系统登录界面开启动项的原理[root@test rc3.d]# \rm K25sshd[root@test rc3.d]# chkconfig --list sshdsshd 0:off 1:off 2:off 3:off 4:off 5:off 6:off[root@test rc3.d]# ll |grepsshd[root@test rc3.d]# ln -s /etc/init.d/sshd S55sshd[root@test rc3.d]# ll |grepsshdlrwxrwxrwx 1 root root 16 Jun 7 01:38 S55sshd -> /etc/init.d/sshd[root@test rc3.d]# chkconfig --list sshdsshd 0:off 1:off 2:off 3:on 4:off 5:off 6:off[root@test rc3.d]# vim /etc/init.d/sshd#!/bin/bash## sshd Start up the OpenSSH server daemon## chkconfig: 2345 55 25问题:如果自己写一个脚本,需要通过chkconfig命令来添加到开机启动项的操作,如何操作?9、企业案例,优化linux精简开机自启动服务。
(了解,到时候会讲)方法一:关闭所有不需要开启的服务[root@shizhixinxi network]# chkconfig --list|grep 3:on|grep -Ev"crond|sshd|network|rsyslog|sysstat"|awk '{print "chkconfig",$1,"off"}'|bash (以上grep -Ev 可以用egrep -v代替)方法二:关闭所有服务,开启需要的服务[root@shizhixinxi network]#chkconfig --list|grep 3:on|awk '{print "chkconfig",$1,"off"}'|bash[root@shizhixinxi network]# chkconfig--list|egrep"crond|sshd|network|rsyslog|sysstat"|awk '{print"chkconfig",$1,"on"}'|bash备注:为什么最后要加一个bash???因为实际上我们linux命令行就是一个bash的会话,平时所敲的linux命令都是通过bash解析完成的。