day01脚本练习题

1、管理员用户登陆系统时,可以使用如下方式,开启并闭系统服务

服务名 start|restart|stop|status

sshd start

答案:

#tail /etc/bashrc

export PATH=/etc/init.d:$PATH

#source /etc/bashrc

2、每周日晚上23:30对数据库服务器webdb数据库做完整备份,把备份文件保存到/mysqlbak文件里,用系统日期做备份文件名

答案:

#crontab -e

30 23 * * 7 /usr/bin/mysqldump -h1.1.1.1 -uroot -padmin123 webdb > /mysqlbak/`date +%F`.sql

3、root用户登陆时,每打开一个新的终端时输出当前登陆终端的用户数

答案:

#tail -2 /etc/profile

yonghu=`who`

echo $yonghu

source /etc/profile

4、定义别名命令grep =‘grep --color‘ 只有系统Jim用户可以使用

答案:

#useradd jim

#su - jim

#tail -1 ~/.bashrc

alias grep="grep --color"

#source ~/.bashrc

5、把系统管理员记录历史记录的条目数改为500

答案:

#vi /etc/profile

...

39 HISTSIZE=500

...

6、root用户登陆系统时显示 当天的日期和网页目录的空间大小

答案:

#tail -4 ~/.bashrc

kongjian=`du -sh`

shijian=`date`

echo $kongjian

echo $shijian

#source /etc/profile

7、所有用户登陆系统后打开新的终端时,都在终端上显示,打开终端时的时间

答案:

#tail -2 /etc/profile

shijain=`date`

echo $shijian

#source /etc/profile

8、定义变量school=tarena 让所有用户登陆系统后都可以使用,编写的脚本里也可以使用

答案:

#tail -1 /etc/profile

export school=tarena

9、使用任意一个系统账号登陆系统,都显示当前系统运行的进程数、

物理内存的使用量、根分区的使用量

答案:

#tail -6 /etc/bashrc

export jinchenag=`ps aux | wc -l`

export neicun=`free -m | grep Mem | awk ‘{print $3}‘`

export cipan=`df -hT` | grep /dev/sdb3 | awk ‘{print $4}‘

echo $neicun

echo $cipan

echo $jincheng

#source /etc/profile

10、管理员用户登陆系统后每打开一个新终端都显示当前系统

运行的进程数、物理内存的使用量、根分区的使用量

答案:

#tail -6 ~/.bashrc

export jinchenag=`ps aux`

export neicun=`free -m | grep Mem | awk ‘{print $3}‘`

export cipan=`df -hT | grep /dev/sda3 | awk ‘{print $4}‘`

echo $neicun

echo $cipan

echo $jincheng

#source /etc/profile

11、

vim pri.sh

#!/bin/bash

echo "当前所在的目录是:"

pwd

echo

echo "文件列表信息如下"

ls

12、

read 从健盘输入内容为变量赋值

read [-p "提示信息"]变量名

-p 提示信息

-t 等待输入数据的时间

stty -echo 终端输出不显示

stty echo  恢复终端输出显示

#!/bin/bash

stty -echo

read -t 5 -p "please your name:" name

echo

read -t 5 -p "please your age:" age

echo

echo $name $age

stty echo

13、备份MySQL数据库服务器上所有的binlog日志文件到系统的/binbak文件里

把备份目录/binbak打包压缩到系统的根目录下,用系统日期做打包压缩文件名,

打包压缩成功后把当前所有的binlog日志删除重新生成binlog日志文件(续上)

#vi bakbinlog.sh

cp /var/lib/mysql/mysqld-bin.0*  /binbak

tar zcf `date +%F`.tar.gz /binbak

mv /shell/* .tar.gz /

rm -rf /binbak/*

#chmod +x /shell/bakbinlog.sh

#./bakbinlog.sh

#crontab -e

30 23 * * * /shell/bakbinlog.sh

14、list_sys_status.sh

显示系统使用的以下信息:

主机名、IP地址、子网掩码、网关、DNS服务器IP地址信息

#!/bin/bash

IP=`ifconfig eth0 | head -2 | tail -1 | awk ‘{print $2}‘ | awk -F":" ‘{print $2}‘`

ZW=` ifconfig eth0 | head -2 | tail -1 | awk ‘{print $3}‘ | awk -F":" ‘{print $2}‘`

GW=`route -n | tail -1 | awk ‘{print $2}‘`

HN=`hostname`

DNS=`head -1 /etc/resolv.conf | awk ‘{print $2}‘`

echo ‘此机IP地址是‘ $IP

echo ‘此机子网掩码是‘ $ZW

echo ‘此机网关是‘ $GW

echo ‘此机主机名是‘ $HN

echo ‘此机DNS是‘ $DNS

15、mysqlbak.sh备份数据库目录脚本

#!/bin/bash

DAY=`date +%Y%m%d`

SIZE=`du -sh /var/lib/mysql`

echo "Date: $DAY" >> /tmp/dbinfo.txt

echo "Data Size: $SIZE" >> /tmp/dbinfo.txt

cd /opt/dbbak &> /dev/null || mkdir /opt/dbbak

tar zcf /opt/dbbak/mysqlbak-${DAY}.tar.gz /var/lib/mysql /tmp/dbinfo.txt &> /dev/null

rm -f /tmp/dbinfo.txt

crontab-e

55 23 */3 * * /opt/dbbak/dbbak.sh

16、每周日半夜23点半,对数据库服务器上的webdb库做完整备份

每备份文件保存到系统的/mysqlbak目录里

用系统日期做备份文件名 webdb-YYYY-mm-dd.sql

每次完整备份后都生成新的binlog日志

把当前所有的binlog日志备份到/mysqlbinlog目录下

#mkdir /mysqlbak

#mkdir /mysqlbinlog

#service mysqld start

cd /shell

#vi webdb.sh

#!/bin/bash

day=`date +%F`

mysqldump -hlocalhost -uroot -p123 webdb > /mysqlbak/webdb-${day}.sql

mysql -hlocalhost -uroot -p -e "flush logs"

tar zcf /mysqlbinlog.tar.gz /var/lib/mysql/mysqld-bin.0*

#chmod +x webdb.sh

#crontab -e

30 23 * * 7  /shell/webdb.sh

时间: 2024-12-29 12:35:20

day01脚本练习题的相关文章

shell脚本练习题(更新中...)

练习题(这里贴的是自己写的代码, 网上给的题目代码我会附加在最下面) 1. 编写shell脚本,计算1-100的和: 1 #!/bin/bash 2 #caculate the sum of numbers from 1 to 100 3 4 sum=0 5 for i in `seq 1 100`; do 6 sum=$[$sum+$i] 7 done 8 echo $sum 2. 编写shell脚本,要求输入一个数字,然后计算出从1到输入数字的和,要求,如果输入的数字小于1,则重新输入,直到

shell脚本练习题

求出数字1~100的累加和: 要求数字的累加,可以使用循环来完成,如下代码: #!/bin/bash sum=0 str="" #for i in {1..100} for ((i=1 ; i<=100 ; ++i)) do     str+="${i}+"     let sum+=i done echo "${str%+}=${sum}" 运行脚本: 另外一种可以用递归的方式: #!/bin/bash read num  sum=0 s

shell编程脚本练习题

1.使用for循环在/oldboy目录下通过随机小写10个字母加固定字符串oldboy批量创建10个html文件,名称例如为: [[email protected] oldboy]# sh /server/scripts/oldboy.sh [[email protected] oldboy]# ls coaolvajcq_oldboy.html  qnvuxvicni_oldboy.html  vioesjmcbu_oldboy.html gmkhrancxh_oldboy.html  tmd

day02脚本练习题

一.four.sh输出用户从健盘输入的任意2个数的四则运算结果 如果用户有一个数值没有输入,就终止脚本 #!/bin/bash read -p "请输入第一个数:"  num1 read -p "请输入第二个数:"  num2 [ -z $num1 ] && exit [ -z $num2 ] && exit sum=`expr $num1 + $num2` jian=`expr $num1 - $num2` cheng=`expr

day03脚本练习题

1.用while循环输出数字1到10(降序输出) 用while循环输出数字35到50(升序输出) #!/bin/bash j=10 i=35 while [ $j -ge 1 ] do echo$j let j-- done while [  50 -ge $i ] do echo$i let i++ done 2.批量添加15个系统用户要求如下 用户名的密码与用户名相同 用户名的前辍是user,用户名格式如下 user01 user02 ... user09 user10 ... user15

day04脚本练习题

1.在fun.sh脚本里定义函数sum_two(功能是能够计算任意两个数相加的和) #!/bin/bash #yi=$1 #er=$2 if [ -z $yi ] || [ -z $er ];then echo数字不能为空 if sum_two() { #sum=`expr $yi + $er` sum=`expr $1 + $2` #echo "$yi + $er = $sum" echo "$1 + $2 = $sum" } #sum_two $1 $2 sum

脚本练习题

脚本练习 达到的效果  ./output.sh   5  file.txt  输出指定文件第5行 ./output  5-10  file.txt 输出指定文件第5-10行 #!/bin/bash ###read the argument to output the file content. if [ -n $1 ] && ! [[ $1 =~ [a-zA-Z] ]] && [ -f $2 ];then              #判断行的参数是否存在且为数字,打开的文件

Linux学习—脚本练习题

shell脚本练习 1.编写脚本/root/bin/checkdisk.sh,检查磁盘分区空间和inode使用率,如果超过80%,就发广播警告空间将满 #!/bin/bash #编写脚本/root/bin/checkdisk.sh,检查磁盘分区空间和inode使用率,如果超过80%,就发广播警告空间将满 #************************************************************************************************

Shell学习之路和我发布过的Shell脚本博文

Shell学习之路 目录 Shell学习之路[第一篇]:别名,管道,用户配置文件,变量,read Shell学习之路[第二篇]:条件测试,运算符,选择结构,for循环结构 Shell学习之路[第三篇]:While循环,C-for循环,Until循环,case分支结构,流程控制语句 Shell学习之路[第四篇]:函数,数组,变量替换 Shell学习之路[第五篇]:多线程脚本 Shell学习之路[第六篇]:Trap信号捕捉命令介绍与Shell结合实战讲解 Shell学习之路[第七篇]:Linux下d