Linux
参考资料
主机BIOS开启虚拟化+VM workstation+centos(GNOME Desktop+NAT)
网络连接 假设教室的主机都在同一个网段 192.168.0.0,
桥接模式:张三的虚拟机的ip也是192.168.0.xxx,占用网络ip,相当于新来了个主机,可以与张三互相通信,也可以和教室的其他主机互相通信,可以访问外网,缺点是可能会造成ip冲突
NAT(常用):李四的主机此时会出现两个ip,原有ip 192.168.0.50 和新ip 192.168.100.4,两个不在同一个网段,而虚拟机的ip是 192.168.100.5,虚拟机可以和李四的主机通过局域网 192.168.100.0 互相通信,虚拟机也可以和李四的其他虚拟机互相通信,也可以借助李四的主机访问到其他主机,可以上外网,但是其他主机无法访问到李四的虚拟机。不过可以使用端口转发功能实现其他主机访问李四的虚拟机。
仅主机:虚拟机是一个独立的主机,只能与主机相互通信,无法与其他主机通信,也无法上网。可以通过网卡共享实现上网。
网络连接测试:
因为主机是直接连接在255的网络上,所以无法测试虚拟机与局域网内的其他主机的通信情况(ping)。
VM安装之后宿主机自动配置网络 V1:192.168.176.1, V8:192.168.44.1
算了,还是没折腾明白,以后有机会再说吧。
分区
/boot: 200M,linux启动文件,ext4
/
swap:2048M,内存的1.5倍,ext4
win和虚拟机的复制粘贴命令,共享文件夹 : vmtools, /mnt/
linux一切皆为文件
Xshell: 远程登录软件 XFTP5:远程上传下载文件
实操篇 vim
命令
操作
yy
复制当前行
5yy
复制当前行的向下5行
p
粘贴
dd
删除当前行
5dd
删除当前行的向下5行
/hhh
查找hhh
n
查找下一个
:set nu
设置行号
:set nonu
取消行号
gg
首行
5gg
第5行
G
末行
20+shift+g
第20行
关机 shutdown:
shutdown -h now: 立即关机
shutdown -h 1: 1分钟后关机
shutdown -r now: 立即重启
halt: 关机 reboot: 重启 sync: 内存数据同步到磁盘
应该先执行 sync,再关机
logout:注销用户,在运行级别3下有效,在用户界面无效
logout: 只能在非用户界面的登录的shell使用, exit:可以用于脚本并返回信息,可以在套层shell中退出当前shell,可以在切换过用户的情况下使用
用户管理 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 useradd [] 用户名 useradd tjj useradd -d /home/tiger zf passwd zf userdel zf userdel -r zf usermod -d /usr/newfolder -u uid username id rootsu zf su - zf whoami groupadd wudang groupdel wudang useradd -g wudang zwj usermod -g shaolin zwj /etc/passwd /etc/group /etc/shadow
实用指令 运行级别 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 0: 关机 1: 单用户,找回丢失密码 2: 多用户无网络服务 3: 多用户有网络服务 4: 系统未实用保留给用户 5: 图形界面 6: 系统重启 /etc/inittab init 2 systemctl get-default systemctl set-default multi-user.target systemctl isolate multi-user.target systemctl isolate graphical.target runlevel
帮助指令 1 2 3 man ls help cd ls --help
文件目录 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 pwd mkdir -p /home/tjj/animal/dogrmdir rm -rf touch test1.txt test2.txt cp aaa.txt ./bbb/ cp aaa.txt ./bbb/bbb.txt cp -r bbb/ ccc/ cp -r bbb/ ccc/ddd cp -r bbb/. ccc/ cp -r bbb/* ccc/ mv oldName newName mv aaa.txt ./bbb/bbb.txt mv aaa.txt ./bbb/ cat -n /etc/profile | more more /etc/profile less /etc/profile less /etc/profile , /hhh
重定向
echo head tail 1 2 3 4 5 6 7 echo $PATH echo "hello" head /etc/profile head -n 5 /etc/profiletail /etc/profile tail -n 5 /etc/profiletail -f log.txt
ln history 1 2 3 4 5 ln -s /root/ /home/tjj/linkToRoot rm -rf /home/tjj/linkToRoot history history 10 !178
时间日期 1 2 3 4 5 6 date date "+%Y %m %d %H:%M:%S" date -s "2019-11-11 12:23:34" cal cal 2020
搜索查找类 1 2 3 4 5 6 7 8 9 10 11 12 13 14 find [搜索范围] [选项] find /home -name hello.txt find /home -user tjj find / -size +20M find /home -name "*.txt" find / -mtime n updatedb locate hello.txt grep [选项] 查找内容 源文件 grep -n yes hello.txt grep -i yes hello.txt cat hello.txt | grep -n yes
{ % assert_img find -mtime find.png % }
压缩和解压缩 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 gzip/gunzip gzip hello.txt gunzip hello.txt.gz gzip hello1.txt hello2.txt gzip -c hello.txt > hhh.gz ls -l | gzip > testgzip.gz zip/unzip zip -r mypackage.zip /home/tjj/ unzip -d /opt/tmp/ mypackage.zip tar tar -zcvf a.tar.gz a1.txt a2.txt tar -zcvf a.tar.gz /home/tjj/ tar -zxvf a.tar.gz tar -zxvf a.tar.gz -C /opt/
组管理和权限管理 组 文件: 所有人,所有组,其他组 所有人的组和所有组可以不一致。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 ls -ahl ok.txtgroupadd police useradd -g police tom passwd tom su tom touch ok.txt[tom@localhost ~]$ ls -hl total 0 -rw-r--r--. 1 tom police 0 Dec 12 21:37 ok.txt chown tjj ok.txt [root@localhost tom] [root@localhost tom] total 0 -rw-r--r--. 1 tjj police 0 Dec 12 21:37 ok.txt chown tom:police ok.txt chown -R tom:police test1/ chgrp shaolin ok.txt chgrp -R shaolin test2/ [root@localhost tom] [root@localhost tom] total 0 -rw-r--r--. 1 tjj shaolin 0 Dec 12 21:37 ok.txt usermod -g 组名 用户名 [root@localhost tom] total 0 -rw-r--r--. 1 tom police 0 Dec 12 21:47 test1.txt [root@localhost tom] [root@localhost tom] uid=1006(tom) gid=1006(shaolin) groups =1006(shaolin) [root@localhost tom] total 0 -rw-r--r--. 1 tom shaolin 0 Dec 12 21:47 test1.txt [root@localhost tom] [root@localhost tom] total 0 -rw-r--r--. 1 tom shaolin 0 Dec 12 21:55 test1.txt [root@localhost tom] [root@localhost tom] total 0 -rw-r--r--. 1 tom shaolin 0 Dec 12 21:55 test1.txt [root@localhost tom] uid=1006(tom) gid=1001(test1) groups =1001(test1) [root@localhost tom] [root@localhost tom] uid=1006(tom) gid=1006(shaolin) groups =1006(shaolin) [root@localhost tom] total 0 -rw-r--r--. 1 tom shaolin 0 Dec 12 21:55 test1.txt [root@localhost tom] [root@localhost tom] uid=1006(tom) gid=1001(test1) groups =1001(test1) [root@localhost tom] total 0 -rw-r--r--. 1 tom test1 0 Dec 12 21:55 test1.txt
权限 文件和目录的权限
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 [root@localhost tjj] total 64344 -rw-rw-r--. 1 tjj tjj 0 Dec 12 20:56 a1.txt drwxrwxr-x. 4 tjj tjj 28 Dec 12 21:01 animal drwxr-xr-x. 2 tjj tjj 6 Dec 9 16:04 Music drwxr-xr-x. 2 tjj tjj 6 Dec 9 16:04 Pictures drwxr-xr-x. 2 tjj tjj 6 Dec 9 16:04 Public drwxr-xr-x. 2 tjj tjj 6 Dec 9 16:04 Templates drwxr-xr-x. 2 tjj tjj 6 Dec 9 16:04 Videos - d l c b 1 7 4096 Dec 12 21:55 r w x r w x
权限管理 1 2 3 4 5 6 7 chmod + - = u: 所有者 g: 所在组 o: 其他人 a: 所有人 chmod u=rwx,g=rx,o=x 文件目录名chmod o+w 文件目录名chmod a-x 文件目录名chmod 751 文件目录名
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 groupadd police groupadd bandit useradd -g police jack passwd jack useradd -g police jerry passwd jerry useradd -g bandit xh passwd xh useradd -g bandit xq passwd xq touch test1.txtchmod 641 test1.txtchmod g=rw,o=r test1.txtusermod -g police xh id xhchmod g=x test1.txt logout
crond 任务调度 定时运行特定的命令或者脚本
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 yum -y install vixie-cron yum -y install crontabs systemctl start crond.service systemctl status crond.service crontab -e */1 * * * * ls -l /etc/ > /tmp/to.txt * 23-7/1 1,3 * * crontab -l crontab -r systemctl crond restart vim /home/mytask1.sh data >> /tmp/mydate chmod u+x mytask1.shcrontab -e */1 * * * * /home/mytask1.sh crontab -e */1 * * * * /home/mytask1.sh 0 2 * * * /home/mytask2.sh
磁盘分区、挂载、查询 磁盘分区、挂载 分区方式:mbr分区, gpt分区
linux 分区:一个分区与一个目录对应。
IDE硬盘:hdx~ SCSI硬盘:sdx~
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 lsblk lsblk -f fdisk -l fdisk /dev/sdb Command (m for help ): m Command (m for help ): n p 1 enter enter w lsblk mkfs -t ext4 /dev/sdb1 mkdir /home/newdiskmount /dev/sdb1/newdisk umount /dev/sdb1 umount /home/newdisk vi /etc/fstab /dev/sdb1 /home/newdisk ext4 defaults 0 0 mount -a
磁盘查询指令 1 2 3 4 5 6 7 8 9 10 11 df -lh du -ach --max-depth=1 /opt ls -l /home | grep "^-" | wc -lls -l /home | grep "^d" | wc -lls -lR /home | grep "^-" | wc -ltree /home
网络配置 宿主机: 真实网卡: 192.168.2.125 vmnet8 : 192.128.184.1 虚拟机 : 192.168.184.125 小王 : 192.168.2.111
虚拟机: 子网IP: 192.128.184.0 网关: 192.128.184.2
1 2 3 4 5 6 7 8 9 10 11 vi /etc/sysconfig/network-scripts/ifcfg-ens33 BOOTPROTO="static" IPADDR="192.168.44.128" NETMASK="255.255.255.0" GATEWAY="192.168.44.2" DNS1="8.8.8.8" ONBOOT="yes" systemctl restart network
进程管理 linux中,每个执行的程序都称为一个进程,每个进程分配一个ID号 每个进程,都会对应一个父进程,每个父进程可以复制多个子进程 每个进程以两种方式存在:前台和后台 一般系统的服务都是以后台进程的形式存在,监听某个端口。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 ps -aux ps -aux | more ps -aux | grep sshd ps -ef ps -ef | grep sshd kill 进程号kill -9 进程号killall 进程名(支持通配符) killall gedit killall 父进程名 ps -aux | grep bash pstree pstree -p pstree -u systemctl start stop restart reload status systemctl enable disable systemctl start firewalld firewall-cmd--zone=public --list-ports firewall-cmd --zone=public --add-port=80/tcp --permanent firewall-cmd --reload telnet 192.168.44.130 22 setup systemctl list-units --type =service 0: 系统停机状态,系统默认运行级别不能设为0,否则不能正常启动 1: 单用户工作状态,root权限,用于系统维护,禁止远程登录 2: 多用户无网络状态 3: 多用户有网络状态 4: 保留 5: 图形GUI 6: 系统正常关闭并重启,系统默认运行级别不能设为6,否则不能正常启动 sshd: 在运行级别为0时,是否自启动 在运行级别为1时,是否自启动 在运行级别为2时,是否自启动 ...... systemctl list-units --type =service systemctl list-unit-files --type =service sshd.service top u k P N top -d 1 netstat netstat -anp netstat -anp | grep sshd telnet ip port
rpm 与 yum rpm 是软件包管理器。用于互联网下载包的打包及安装工具,包含在某些Linux分发版中。生成具有 .RPM 扩展名的文件。与dpkg类似。
yum 是软件包管理器的前端工具。基于RPM包管理,能够从指定的服务器自动下载RPM包并安装,并且可以自动处理依赖性关系,一次安装所有依赖的软件包。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 rpm -qa | grep firefox rpm -q firefox firefox-52.7.0-1.el7.centos.x86_64 rpm -qi firefox rpm -ql firefox rpm -qf /etc/passwd setup-2.8.71-9.el7.noarch rpm -e firefox rpm -e --nodeps firefox rpm -ivh firefoxxxx.rpm yum list | grep xxx yum install xxx
JavaEE定制篇 jdk+tomcat+eclipse+mysql
JDK安装与配置 jdk-8u191-linux-x64.tar.gz
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 tar -zxvf jdk-8u191-linux-x64.tar.gz vim /etc/profile JAVA_HOME=/opt/jdk1.8.0_191 PATH=/opt/jdk1.8.0_191/bin:$PATH export JAVA_HOME PATHsource /etc/profile logout java javac vim Hello.javaf public class Hello{ public static void main(String[] args){ System.out.println("hello" ); } } javac Hello.java java Hello
tomcat apache-tomcat-7.0.99.tar.gz
1 2 3 4 5 6 7 8 tar -zxvf apache-tomcat-7.0.99.tar.gz cd apache-tomcat-7.0.99/bin/./startup.sh telnet 192.168.44.130 8080 firewall-cmd --zone=public --add-port=8080/tcp --permanent firewall-cmd --reload 192.168.44.130:8080
Eclipse eclipse-jee-2019-12-M3-linux-gtk-x86_64.tar.gz
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 tar -zxvf eclipse-jee-2019-12-M3-linux-gtk-x86_64.tar.gz cd eclipse./eclipse new Dynamic Web Project runtime: tomcat7.0 jdk1.8.0_191 Dynamic web module version: 2.5 在工程的 WebContent 中 new jsp 文件 hello.jsp <body> <h1> hello from Linux</h1> </body> run as on server http://localhost:8080/demo/hello.jsp 192.168.44.130:8080/demo/hello.jsp
mysql mysql-5.6.40.tar.gz
https://www.cnblogs.com/shijiaqi1066/p/4311061.html 从源码编译安装 mysql
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 rpm -qa | grep mysql rpm -e xxx rpm -e --nodeps xxx yum -y install make gcc-c++ cmake bison-devel ncurses-devel tar -zxvf /opt/mysql-5.6.40.tar.gz cd /opt/mysql-5.6.40/cmake \ -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ -DMYSQL_DATADIR=/usr/local/mysql/data \ -DSYSCONFDIR=/etc \ -DWITH_MYISAM_STORAGE_ENGINE=1 \ -DWITH_INNOBASE_STORAGE_ENGINE=1 \ -DWITH_MEMORY_STORAGE_ENGINE=1 \ -DWITH_READLINE=1 \ -DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock \ -DMYSQL_TCP_PORT=3306 \ -DENABLED_LOCAL_INFILE=1 \ -DWITH_PARTITION_STORAGE_ENHINE=1 \ -DEXTRA_CHARSETS=all \ -DDEFAULT_CHARSET=utf8 \ -DDEFAULT_COLLATION=utf8_general_ci \ make && make install cat /etc/passwd | grep mysqlcat /etc/group | grep mysqlgroupadd mysql useradd -g mysql mysql chown -R mysql:mysql /usr/local/mysqlcd /usr/local/mysqlscripts/mysql_install_db --basedir=/usr/local/mysql --user=mysql --datadir=/usr/local/mysql/data mv /etc/my.cnf /etc/my.cnf.bakcd /usr/local/mysqlcp support-files/mysql.server /etc/init.d/mysqlmkdir /var/lib/systemctl enable mysql systemctl start mysql netstat -anp | grep mysql cd /usr/local/mysql/bin./mysql -u root mysql>set password = password('root' ); mysql>quit ./mysql -u root -p mysql>show databases; mysql> create database atguigu; mysql> use atguigu; mysql> create table user(id int, name varchar(32)); mysql> insert into user value(100, 'tom' ); mysql> select * from user;
tips: service == /etc/init.d/xxx == systemctl
大数据定制篇 Shell shell入门 应用程序—>shell—>Linux 内核—>硬件
脚本格式:
“#!/bin/bash” 开头
脚本有可执行权限
shell 没有严格的缩进,缩进只是为了更好的可读性
1 2 3 4 5 6 7 8 9 10 11 12 vim myShell.sh echo "hello, world!" chmod a+x myShell.sh./myShell.sh /root/shell/myShell.sh sh ./myShell.sh bash ./myShell.sh
tips: ./xx.sh == sh xx.sh
shell变量 shell变量分为系统变量($HOME, $PWD, $USER等等)和用户变量
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 vim myShell.sh echo "PATH=$PATH " echo "USER=$USER " chmod a+x myShell.sh./myShell.sh set a=100 $a ${PATH} unset a readonly a=99 export a vim myShell.sh a=100 echo "$a " unset aecho "$a " readonly b=99echo "$b " b=98 echo "$b " unset becho "$b "
变量定义的规则:
等号两侧不能有空格
变量名称习惯大写
1 2 3 4 5 6 7 8 9 A=`ls -l` A=$(ls -l) echo '$PATH' $PATH echo "$PATH " /usr/local...
shell 环境变量 1 2 3 4 5 6 7 8 9 10 11 12 13 export 变量名=变量值source echo $变量名TOMCAT_HOME=/usr/local/tomcat export TOMCAT_HOMEexport TOMCAT_HOME=/usr/local/tomcat:<<! echo "hello" !
shell 位置参数变量 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 $n $* $@ $# vi positionPara.sh echo "$0 $1 $2 " echo "$*" secho "$@ " echo "$# " chmod a+x positionPara.sh[root@localhost shell] ./positionPara.sh 30 60 30 60 30 60 2 echo "$0 $1 $2 " for N in $*do echo $N done for N in $@ do echo $N done for N in "$*" do echo $N done for N in "$@ " do echo $N done echo "$*" echo "$@ " echo "$# " ./positionPara.sh 30 60 30 60 30 60 30 60 30 60 30 60 30 60 2
Shell 预定义变量 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 $$ $! $? vim preVar.sh echo $$./myShell.sh & echo $!echo $?[root@localhost shell] 122809 122810 0
Shell 运算符 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 $((表达式)) $[表达式] expr vim demo.sh echo $(((2 +3 )*4 ))echo $[(2+3)*4]TMP=`expr 2 + 3` RES=`expr $TMP \* 4` echo $RES RES=`expr \( 2 + 3 \) \* 4` echo $RES 20 20 20 20
Shell 判断语句 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 [ condition ] [ guigu ] [] [ condition ] && echo OK || echo notOK == -lt -le -eq -gt -ge -ne -r -w -x -f -e -d [ 'ab' =='ab' ] && echo OK || echo notOK [ 12 -lt 12 ] && echo OK || echo notOK
Shell 流程控制 if 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 if [ command ];then 程序 elif [ command ];then 程序 else 程序 fi if [ 条件判断句 ]then 程序 elif [ 条件判断句 ] 程序 else 程序 fi vim testif.sh if [ $1 -ge 60 ]then echo "you are OK" else echo "you are not OK" fi chmod a+x testif.sh./testif.sh 66
Shell 流程控制 case 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 case $变量名 in "值1" ) 程序1 ;; "值2" ) 程序2 ;; *) 程序3 ;; esac vim testcase.sh case $1 in "1" ) echo "1" ;; "2" ) echo "2" ;; *) echo "*" ;; esac bash testcase.sh 1
Shell 流程控制 for 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 for var in 值1 值2 ...do 程序 done for ((初始值;循环控制条件;变量变化))do 程序 done for var in $@ do echo $var done [root@localhost shell] 1 2 3 for var in 1 2 3do echo $var done 1 2 3 SUM=0 for ((i=1;i<=100;i++))do SUM=$[$SUM +$i ] done echo $SUM 5050
Shell 循环控制 while 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 while [ 条件判断句 ]do 程序 done SUM=0 i=0 while [ $i -le $1 ]do SUM=$[$SUM +$i ] i=$[$i +1] done echo $SUM bash testwhile.sh 10
Shell 读取控制台输入 1 2 3 4 5 6 7 8 9 10 11 12 13 read [选项](参数)-p: 指定读取数值时的提示符 -t: 指定读取数值时等待的时间 参数: 指定读取数值的变量名 read -p "num1:" NUM1echo $NUM1 read -p "num2:" -t 10 NUM2echo $NUM2
Shell 系统函数 1 2 3 4 5 6 7 8 9 10 11 12 13 14 basename [pathname] [suffix][root@localhost shell] bbb.txt [root@localhost shell] bbb [root@localhost shell] bbb.txt [root@localhost shell] /home/tjj
Shell 自定义函数 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 [function ] funname [()] { Action [return int] } funname 参数值 function getSum (){ SUM=$[$n1 +$n2 ] echo $SUM } read -p "n1" n1read -p "n2" n2getSum $n1 $n2 function getSum (){ SUM=$[$n1 +$n2 ] echo $SUM } read -p "n1" n1read -p "n2" n2getSum function getSum (){ SUM=$[$1 +$2 ] echo $SUM } read -p "n1" n1read -p "n2" n2getSum $n1 $n2
Shell 定时维护数据库 任务要求:
每天凌晨2:10备份数据库atguigu到/data/backup/db
备份开始和结束给出提示信息
备份后的文件以备份时间为文件名,打包成 .tar.gz 格式
备份的同时检查是否有10天前的数据库文件,如果有,将其删除
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 cd /usr/sbinvim mysql_db_backup.sh BACKUP=/data/backup/db DATETIME=$(date "+%Y_%m_%d_%H%M%S" ) [ ! -d "$BACKUP /$DATETIME " ] && mkdir -p $BACKUP /$DATETIME echo "===========backup begin=========" echo "the filepath is $BACKUP /$DATETIME .tar.gz" HOST=localhost DB_USER=root DB_PWD=root DATABASE=atguigu mysqldump -u${DB_USER} -p${DB_PWD} --host=$HOST $DATABASE | gzip > $BACKUP /$DATETIME /$DATETIME .sql.gz cd $BACKUP tar -zcvf $DATETIME .tar.gz $DATETIME rm -rf $BACKUP /$DATETIME find -mtime +10 -name ".tar.gz" -exec rm -rf '{}' \; echo "=============backup end============" crontab -e 10 2 * * * /usr/sbin/mysql_db_backup.sh
ubuntu 1 2 3 4 5 6 7 8 9 https://mirrors.tuna.tsinghua.edu.cn/ /etc/apt/sources.list apt-get update apt-get upgrade apt-get install\remove apt-cache show package apt-get source package sudo sh -c "echo '' > sources.list"