1、编写脚本/root/bin/backup.sh,可实现每日将/etc/目录备份到 /root/etcYYYY-mm-dd中

#!/bin/bash
echo "start backup"
sleep 2
date=`date "+%Y-%m-%d"`
cp -av /etc /root/etc$date
echo "backup finish"

2、编写脚本/root/bin/disk.sh,显示当前硬盘分区中空间利用率最大的值

#!/bin/bash
echo "disk use max :`df -h|grep ^/dev/[svm]d |tr -s " " "%"|cut -d% -f5|sort -rn|head -n1`"

3、编写脚本/root/bin/nologin.sh和login.sh,实现禁止和充许普通用户登录系统

login

#!/bin/bash
[ -f "/etc/nologin" ] && rm -rf /etc/nologin && echo "User Can Login" ||echo "User Already Login" nologin
#!/bin/bash
[ -f "/etc/nologin" ] && echo "Other User Cannot Login System" ||{ touch /etc/nologin; echo "Other User Cannot Login System"; }

4、查找/var目录下不属于root、lp、gdm的所有文件

find /var -not \( -user root -o -user lp -o -user gdm \)

5、统计/etc/init.d/functions文件中每个单词的出现次数,并排序(用grep和 sed两种方法分别实现)

sed -r "s/[^[:alpha:]]+/\n/g" /etc/init.d/functions | sed "/^$/d" |sort|uniq -c

egrep -o "[[:alpha:]]+" /etc/init.d/functions|sort|uniq -c

6、利用sed 取出ifconfig命令中本机的IPv4地址

ifconfig | sed -n "2p" |sed -r "s/.*inet (.*) netmask.*/\1/g"

7、总结yum的配置和使用,包括yum仓库的创建

yum install 安装
yum groupinstall 组安装
yum remove 卸载
yum groupremove 组卸载
yum list 显示所有包
yum clean all 清除缓存
yum makecache 建立缓存 yum仓库目录/etc/yum.repos.d/
[base]
name=base
baseurl=http:// ftp:// file:///
gpgcheck=1
enabled=1

8、编写系统初始化脚本reset.sh,包括别名,提示符颜色,yum仓库配置文件, 安装tree,ftp,lftp,telnet等包

#!/bin/bash
#
#********************************************************************
#Author: DreamDZhu
#QQ: 852749070
#Date: 2019-01-30
#FileName: autoInitSystem.sh
#Description: AutoInitSystem
#********************************************************************
#decide current system os
echo "Start Init System,Please Waiting Some Time~~"
sleep 2
version=`egrep -o "[0-9]" /etc/redhat-release |head -n1`
echo "Current System Version is Centos $version"
echo "Setting Alias...."
sleep 1
cat >>/root/.bashrc<<END
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
alias cdnet='cd /etc/sysconfig/network-scripts/'
alias IPOUT='ifconfig | egrep -o "\<([[:digit:]]{1,3}\.){3}[[:digit:]]{1,3}\>" | head -1'
alias p='poweroff'
alias cl='clear'
`if [ "$version" -eq 7 ];then
ps1="\[\e[1;36m\][\u@\h \W]\$\[\e[0m\]"
elif [ "$version" -eq 6 ];then
ps1="\[\e[1;33m\][\u@\h \W]\$\[\e[0m\]"
else
ps1="\[\e[1;35m\][\u@\h \W]\$\[\e[0m\]"
fi`
PS1=$ps1
END
echo "Alias and PS1 be Ready~"
echo "Start Setting Yum Repository..."
sleep 1
#mount cd rom
mkdir /media/cdrom
mount /dev/sr0 /media/cdrom
mkdir /etc/yum.repos.d/bak
#move system Centos repo
mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak
cat >>/etc/yum.repos.d/bash.repo<<END
[base]
name=Centos "$version"
baseurl=file:///media/cdrom
gpgcheck=0 [epel]
name=Aliyun
baseurl=https://mirrors.aliyun.com/epel/$version/x86_64
gpgcheck=1
gpgkey=file:///media/cdrom/RPM-GPG-KEY-CentOS-$version
END
echo "Yum Repo be Ready~"
echo "Start Install Rpms"
sleep 1
yum cleanall && yum makecache
yum -y install tree && yum -y install ftp && yum -y install lftp && yum -y install telnet
echo "tree ,ftp,lftp,telnet already Install~"
if [ $version -eq 7 ];then
systemctl stop firewalld
systemctl disable firewalld
elif [ $version -eq 6 ];then
service iptables stop
chkconfig iptables off
else
echo "Please Manual Stop Firewall"
echo "Init System Over"

9、在CentOS7上编译安装apache2.4源码包,并启动此服务

./configure --help 可以查看这个程序源码的可改编译选项

解压四个包
tar xvf apr-1.4.5.tar.gz
tar xvf apr-util-1.3.12.tar.bz2
tar xvf httpd-2.4.33.tar.bz2
tar xvf pcre-8.10.tar.gz 先编译apr依赖包
mkdir -p /usr/local/apr
cd /data/apr-1.4.5/
./configure --prefix=/usr/local/apr
make -j 2 && make install 再编译apr-util
mkdir -p /usr/local/apr-util
cd apr-util-1.3.12/
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/bin/apr-1-config
make -j 2 && make install 编译安装pcre依赖包
mkdir -p /usr/local/pcre
cd /data/pcre-8.10/
./configure --prefix=/usr/local/pcre
make -j 2 && make install 最后编译安装http
mkdir /app
mkdir /etc/httpd24
./configure --prefix=/app --sysconfdir=/etc/httpd24 --enable-ssl --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util (--disable-proxy)
make -j 4 && install 由于我们安装在app,所以需要手动开启,或者配置PATH
/app/bin/apachectl start 安装时要注意配置文件的路径!!!
编译错误解决
基于Make工具编译软件; n Make编译报错信息如下: mod_proxy_balancer.c:25:24: fatal error: apr_escape.h: No such file or directory,#include "apr_escape.h" `/data/sh/20180330/httpd-2.4.33/modules/proxy' make[2]: *** [shared-build-recursive] Error 1 解决方法:
l 跳过该错误,后期指定该模块,一般安装不成功,推荐解决该问题;
l 或者编译参数可以去掉该模块,禁止该模块,添加--disable-proxy;
l 更换软件版本,考虑到操作系统和软件兼容性问题;

shell 练习题 - 第三周的更多相关文章

  1. # 2019-2020-3 《Java 程序设计》第三周总结

    2019-2020-3 <Java 程序设计>第三周知识总结 1.类的定义 语法格式如下(加[]表示可选项): [修饰符] class 类名 { 属性定义(声明) 方法定义(声明)} 2. ...

  2. 对于“2017面向对象程序设计(Java)第三周学习总结”存在问题的反馈

    对于“2017面向对象程序设计(Java)第三周学习总结”存在问题的反馈 一:教学中存在的学习问题 “1.由于同学们平时练习不足,上课总是出现跟不上老师的节奏的现象. 2.个别同学上课不认真听讲,打开 ...

  3. linux内核分析第三周

    20135103王海宁 linux内核分析第三周 http://mooc.study.163.com/course/USTC-1000029000  按照课堂提供的方法,命令行一行行敲上去,我是手机缓 ...

  4. 《Linux内核分析》第三周学习报告

    <Linux内核分析>第三周学习报告                                    ——构造一个简单的Linux系统MenuOS 姓名:王玮怡  学号:201351 ...

  5. 《Linux内核分析》第三周学习小结 构造一个简单的Linux系统OS

    郝智宇 无转载 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 第三周 构造一个简单的Linux系统Me ...

  6. 《Linux内核分析》第三周学习笔记

    <Linux内核分析>第三周学习笔记 构造一个简单的Linux系统MenuOS 郭垚 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.stud ...

  7. LINUX内核分析第三周学习总结——构造一个简单的Linux系统MenuOS

    LINUX内核分析第三周学习总结——构造一个简单的Linux系统MenuOS 张忻(原创作品转载请注明出处) <Linux内核分析>MOOC课程http://mooc.study.163. ...

  8. 《Linux内核分析》 第三周 构造一个简单的Linux系统MenuOS

    Linux内核分析 第三周 构造一个简单的Linux系统MenuOS 张嘉琪 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/ ...

  9. Linux内核分析——第三周学习笔记20135308

    第三周 构造一个简单的Linux系统MenuOS 计算机三个法宝: 1.存储程序计算机 2.函数调用堆栈 3.中断 操作系统两把宝剑: 1.中断上下文的切换:保存现场和恢复现场 2.进程上下文的切换 ...

随机推荐

  1. JavaScript进阶 - 第6章 事件响应,让网页交互

    6-1什么是事件 JavaScript 创建动态页面.事件是可以被 JavaScript 侦测到的行为. 网页中的每个元素都可以产生某些可以触发 JavaScript 函数或程序的事件. 比如说,当用 ...

  2. ios Realm的使用 本地数据存储

    引入需要的文件 pod 'RealmSwift' pod 'Realm' 然后在命令行使用 (首先应该cd到项目的根目录)输入 pod install 等待下载就行了(这个下载有点费劲,其他的插件包下 ...

  3. c# Array或List有个很实用的ForEach方法,可以直接传入一个方法对集合中元素操作

    using System; using System.Collections.Generic; namespace demo { class Program { static void Main(st ...

  4. XmlSerilizer序列化出错时,不妨考虑BinaryFormatter

    当你使用XmlSerilizer序列化一个结构复杂的类型时出现反射出错 XmlSerilizer并不会告诉你哪个字段属性或者嵌套的字段属性不能被序列号,面对多年前的代码逐一排查很恼人使用BinaryF ...

  5. SpringBoot---Web开发---Thymeleaf模板引擎

    一.前言 1.JSP在内嵌的Servlet容器中运行有一些问题: 1.1 内嵌的Tomcat.Jetty不支持以jar形式运行JSP: 2.2 Undertow不支持JSP: 2.SpringBoot ...

  6. 关于codeblock 为什么不能调试

    最近codeblock不能调试了,一开始还以为把断点放在了函数里面,所以不行. 代码短,就自己看了, 有时候实在不行,真的要调试,那怎么办?其实很多时候是你的文件名的问题. 1.project的路径必 ...

  7. BZOJ3004: 吊灯(结论 毒瘤)

    题意 $n$个节点的树,判断能否划分成$\frac{n}{k}$个大小为$k$的联通块 Sol 首先$k$必须是$n$的倍数. 然后刚开始我就非常傻的以为输出所有约数就行了.. 但是图是这样,$k = ...

  8. zblog忘记后台密码怎么办 官方解决方案

    刚装的zblog还没开始研究,结果发现密码弄错了进不去后台,也是醉了 为节省时间,直接用官方方案,就是一个无密码进后台的文件.下载后把文件上传至网站根目录,然后直接访问后台修改密码 zblog密码找回 ...

  9. arcgis jsapi接口入门系列(0):总览

    开发环境: arcgis jsapi版本4.9 由于我们这套代码是基于vue,webpack开发的,会有少数vue代码,但总体不影响 里面还有些我们公司的js库和html css,给出的代码不能百分百 ...

  10. redis-----字符串操作的复杂度

    命令 含义 复杂度 set key value 设置key-value o(1) get key 获取key-value o(1) del key 删除key-value o(1) setnx set ...