服务器运维 Shell 脚本“出错”是一个很宽泛的问题,通常并不是脚本本身凭空坏掉,而是运行环境、权限、逻辑或外部依赖出了问题。下面从常见原因 → 排查方法 → 预防建议三个层面给你一个系统性说明。
chmod +x script.sh
root 写的脚本,普通用户跑不了✅ 排查:
ls -l script.sh
whoami
脚本头部写错:
#!/bin/bash
但实际系统是:
which bash
# 可能是 /usr/local/bin/bash
✅ 推荐写法:
#!/usr/bin/env bash
echo $VAR # VAR 为空
rm -rf $DIR/ # 灾难
✅ 建议:
set -u
或在开头加:
set -euo pipefail
cron 里跑,当前目录不是你以为的目录✅ 正确方式:
cd "$(dirname "$0")"
awk / sed / grep 行为不同✅ 排查:
command -v command_name
cron 环境:
PATH✅ 建议:
0 2 * * * /bin/bash /opt/scripts/backup.sh >> /var/log/backup.log 2>&1
✅ 强烈推荐:
set -euo pipefail
.bashrc 不执行✅ 解决:
ssh user@host 'bash -l -c "your_command"'
bash -x script.sh
✅ 脚本开头模板:
#!/usr/bin/env bash
set -euo pipefail
LOG=/var/log/ops.log
echo "$(date) start" >> "$LOG"
✅ 永远:
rm -rf如果你愿意,可以把具体报错信息或脚本片段发出来,我可以直接帮你定位是哪一类问题,甚至逐行帮你改。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。