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