shell脚本的运行方式
运行shell脚本的几种主要方式如下:
- 赋予可执行权限后执行:
- 先通过
chmod
命令给脚本添加执行权限:
chmod +x script.sh
- 然后,通过绝对路径或相对路径执行脚本:
./script.sh # 如果当前目录下有script.sh
/path/to/script.sh # 如果脚本位于其他目录
- 使用bash或sh命令执行:
- 不需要给脚本增加执行权限,直接通过bash或sh命令执行:
bash script.sh
sh script.sh
/bin/bash script.sh
/bin/sh script.sh
- 使用source命令或
.
执行:
- 在当前shell环境中执行脚本,这样脚本中设置的变量、函数等将影响当前shell:
source script.sh
. script.sh
总结起来,以下是具体的执行方式:
- 直接执行(需先赋予可执行权限):
chmod +x script.sh
./script.sh
- 通过shell解释器执行:
bash script.sh
sh script.sh
- 在当前shell上下文中执行:
source script.sh
. script.sh
每种执行方式都有其特点,直接执行会在一个新的子shell进程中运行脚本,而使用source
或.
执行则在当前shell进程中运行,使得脚本中改变的环境变量和函数作用于当前shell。
备份脚本解释
#!/bin/bash
mkdir -p /backup
tar zcvfP /backup/www_$(date +%F).tar.gz /html/www
find /backup/ -type f -mtime +10|xargs rm
rsync -avz /backup/* rsync_backup@10.0.1.134::backup --password-file=/etc/rsync.password
这段Shell脚本包含了几个命令步骤,实现的功能概括如下:
1. **创建备份目录**:
- 使用`#!/bin/bash`作为脚本的shebang行,指明该脚本采用bash shell进行解析执行。
- `mkdir -p /backup` 创建(如果不存在的话)/backup目录。参数-p的作用是如果父目录不存在,则自动创建(parents)。
2. **打包并压缩指定目录**:
- `tar zcvfP /backup/www_$(date +%F).tar.gz /html/www` 命令会把/html/www目录下的所有文件和子目录打包成gzip压缩格式的tar文件,并命名为以当前日期结尾的形式,存放在/backup目录下。
3. **清理旧的备份文件**:
- `find /backup/ -type f -mtime +10|xargs rm` 查找/backup目录下修改时间超过10天的所有文件(-mtime +10),然后通过管道传递给`xargs rm`命令删除这些文件。
4. **通过rsync同步备份至远程服务器**:
- `rsync -avz /backup/* rsync_backup@10.0.1.134::backup --password-file=/etc/rsync.password` 使用rsync工具,以归档(-a)、递归(-r,由于-a选项已包含-r所以此处无需再写-r)、压缩(-z)的方式,将/backup目录下的所有文件同步到远程服务器(IP地址:10.0.1.134)上名为"backup"的模块中。密码信息从/etc/rsync.password文件中获取。
在运行此脚本之前,请确保:
- 用户有创建、读取/html/www目录以及写入/backup目录的权限;
- 确保远程服务器上的rsync服务已经开启,并且rsync_backup用户可以登录,同时/etc/rsync.password文件存在且有正确的rsync连接密码;
- 当前主机和远程服务器之间的网络连接畅通。