1、如何过滤出已知当前目录下oldboy中的所有一级目录(提示:不包含oldboy目录下面目录的子目录及隐藏目录,即只能是一级目录)?

思路:

①根据颜色区分文件和目录

未知


②ls -l输出结果中以d开头的就是目录

ls -l|grep "^d" 【查看以d开头的目录文件】


③ls -l输出结果中第二列数字大于1的就是目录(文件没有硬链接的情况下是对的)

ls -l |awk '{if($2>1) print $0}'【print $0:输出整行,$NF:表示结尾一列】


④通过给目录加标识,然后通过过滤标识,就过滤出目录(ls -F或ls -p)

ls -p|grep "/$" 【查看以/结尾的目录文件,-p 给目录结尾加斜线】

ls -F|grep "/$" 【查看以/结尾的目录文件,-F 给不同文件结尾加不同标识】


⑤通过find直接查找指定类型的文件(-d 就是目录)。

find . -maxdepth 1 -type d ! -name "."【-maxdepth 1:查看当前的目录文件不包含子目录】


ls -a 【显示所有(包括隐藏文件),默认.开头的文件都是隐藏的】


less【和more相反,回车一次一行,空格一次一屏,按b一次回退一屏】

more【按页一次一屏,回车一次一行,空格向下一次一屏,不能回退】

Linux三剑客(只适合grep、sed、awk)正则表达式:

^    以...开头,^d,意思是以d开头

$    以...结尾,/$,意思是以/结尾

\    转义字符

.    代表任意单个字符

.*   代表所有 


2、显示nginx.conf中的行号及内容

先模拟数据:

echo stu{1..10}|xargs -n 1 >nginx.conf【将stu1—stu10依次写入nginx.conf中,xargs -n 1表示分1组换行

cat -n nginx.conf【-n显示行号】

nl nginx.conf【不显示空行行号】

less -N nginx.conf【显示所有行号包括空行】

grep -n . nginx.conf【-n显示行号,不显示空行行号】

grep -n ".*" nginx.conf【显示空行行号】

vim nginx.conf然后:set nu就显示行号,取消显示:set nonu

awk '{print NR,$0}' nginx.conf【NR表示行号,$0表示整行内容】

sed = nginx.conf|sed 'N;s/\n//'


grep --color=auto 3306 /etc/services【对过滤的字符串3306加颜色】

wc -l nginx.conf【-l查看文件总行数 -L查看最大的长度】

3、linux系统运行级别一般为0-6,分别写出每个级别的含义?

0:关机模式

1:单用户模式

2:无NFS的多用户模式

3:文本模式(完整的多用户模式)

4:未使用的

5:图形模式

6:重启模式


4、通过chkconfig管理开机自启动服务

chkconfig --list 【查看开机自启动列表】

chkconfig --list sshd【查看sshd服务开机自启动的状态】

chkconfig sshd on 【设置sshd服务开机自启动,off为不启动】

chkconfig --level 345 sshd on 【设置sshd服务3、4、5级别项开机启动】

chkconfig --add test.sh 【添加test.sh服务到开机自启动列表,当自己添加到chkconfig的时候,test.sh内容首行必须写:

#chkconfig: 234 66 36
#description: test

第一行234表示test.sh由234级别控制开机自启动

第二行66表示开机自启动序号,自己设置

第三行36表示开机不启动序号,自己设置


chkconfig --del test.sh 【从开机自启动列表删除test.sh服务】

chkconfig的原理:

举例:chkconfig --level 3 sshd off,会删除/etc/init.d/rc3.d/下的自启服务S55sshd然后添加K25sshd到/etc/init.d/rc3.d/下 【S55sshd中,S表示开启,55是根据/etc/init.d/sshd中的chkconfig决定的,sshd是服务名】


5、优化linux精简开机自启动服务


思路①:关掉不需要的服务,因为默认是开启某些服务的

chkconfig --list|grep "3:on"|egrep -v "crond|sshd|network|rsyslog|sysstat"|awk '{print "chkconfig",$1,"off"}'|bash

【上面命令的含义是:关闭开机自启动除了crond、sshd、network、rsyslog、sysstat这5个服务以外的服务,bash是执行这条命令】


思路②:关掉全部服务,再开启需要的服务

chkconfig --list|awk '{print "chkconfig",$1,"off"}'|bash
chkconfig --list|egrep "crond|sshd|network|rsyslog|sysstat"|awk '{print "chkconfig",$1,"on"}'|bash


6、描述Linux系统从开机到登录界面的启动过程

①.开机BIOS自检

②.MBR引导

③.grub引导菜单

⑤.加载内核kernel

⑥.启动init进程

⑦.读取inittab文件,执行rc.sysinit,rc等脚本

⑧.启动mingetty,进入系统登陆界面


7、编写一个脚本,要求创建test1到test10的用户,8位随机密码

for n in `seq 10`;do useradd test$n;echo "`echo test$n|md5sum|cut -c1-8`"|passwd --stdin test$n;done

echo "xxx"|passwd --stdin test:明文设置test用户的密码为xxx


8、统计/var/log目录中的文件个数

ll /var/log|grep '^-'|wc -l

wc:为每行文件或目录统计个数

用tree也可以查看文件个数

tree -L 1 /var/log|tail -1|cut -d " " -f3

tree -L 1:指定log目录下的文件,不递归。

cut -d " " -f3:以空格分割,输出第3列

用find命令也可以查找file个数

find /var/log -maxdepth 1 -type f |wc -l

-maxdepth 1:指定当前的目录文件不包含子目录


9、将/test目录下大于10k的文件移动到/usr/test下

find /test -type f -size +10k | xargs -i mv {} /usr/test
find /test -type f -size +10k -exec mv {} /usr/test \;

查看网卡信息用:ethtool eth0

查看占用80端口的进程:netstat -tnulp|grep 80;ss -tnulp|grep 80;lsof -i :80

进入单用户模式:init 1;进入后查看是否是单用户模式:runlevel;回去init 3

磁盘空间被沾满如何定位问题?df -h 

inode用尽如何定位问题?df -i

查看根目录下最大的5个目录

find / -type d|xargs ls -ld 2>/dev/null |sort -k5 -n|tail -5


10、找出系统内大于50k,小于100k的文件,并删除之。

find / -type f -size +50k -size -100k -exec rm {} \;


11、在目录/test下找到10个以aaa开头的文件,然后将每个文件的第一行保存至/test目录下的bbb文件中

find /test -type f -name "aaa*"|head|xargs head -1 -q > /test/bbb


12、一台服务器有6块600g的硬盘,总大小3T,raid5后无法安装系统,请问什么问题并解决

当硬盘大于2T时就无法安装操作系统。

①、做raid5后,直接分1个小的虚拟磁盘DV 200G,用200g装系统,剩余的2.8T使用parted进行分区。

②、先拿1块盘做raid0并安装系统,其他5块盘做raid5。

③、安装系统时,选择gpt分区格式。


13、查看当前系统每个IP连接数

netstat -an|grep "ESTABLISHED"|awk '{print $4}'|awk -F: '{print $1}'|sort -n|uniq -c

sort -n:排序

uniq -c:显示该行重复的次数


14、请列出以下服务使用的端口号

nginx、http、https、mysql、dns、ssh、rsync、ftp

awk --posix '$1~/^(http|https|ftp|telnet|ssh|rsync|dns|mysql)$/{print $0}' /etc/services

awk --posix:使能够使用正则表达式

$1~:第一行匹配...的内容.


awk -F "[ /]+" '$1~/^(ftp|http|https|mysql|ssh)$/{print $1,$2}' /etc/services |uniq


15、如何查看主机的路由规则、开放端口、tcp 建连状态。

netstat -rn


16、统计文件里面的空行数

awk '/^$/{a=a+1;print a}' /etc/services
awk '/^$/{a=a+1}END{print a}' /etc/services


17、查看$PATH 环境变量中的3个字符的命令,并计数有多少个。

find $(echo $PATH|tr ":" " ") -type f -name "???" | awk '{a++}END{print "result:"a}'


18、监控系统内存并报警案例[发送邮箱]:

#!/bin/bash
neicun=`free -m|awk 'NR==2 {print $NF}'`
sendfile="服务器当前可用内存为"$neicun"m!"
#判断内存是否超标
if [ $neicun -lt 100 ]
then
        echo "服务器内存超标了!"$sendfile""
else
        echo "内存足够,$sendfile"
fi