shell脚本的运行方式

shell脚本的运行方式

运行shell脚本的几种主要方式如下:

  1. 赋予可执行权限后执行

    • 先通过chmod命令给脚本添加执行权限:
      chmod +x script.sh
      
    • 然后,通过绝对路径或相对路径执行脚本:
      ./script.sh    # 如果当前目录下有script.sh
      /path/to/script.sh    # 如果脚本位于其他目录
      
  2. 使用bash或sh命令执行

    • 不需要给脚本增加执行权限,直接通过bash或sh命令执行:
      bash script.sh
      sh script.sh
      /bin/bash script.sh
      /bin/sh script.sh
      
  3. 使用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连接密码;
- 当前主机和远程服务器之间的网络连接畅通。
posted @ 2024-03-17 20:58  三思博客  阅读(67)  评论(0编辑  收藏  举报