linux-日常操作记录

-----------------------------------------------------------------

crontab 任务如何看执行日志
crontab 本身不会自动记录任务执行日志,需要通过配置让任务输出日志。查看 crontab 任务执行日志的常用方法如下:

1. 让任务输出日志到指定文件(推荐)

在定义 crontab 任务时,手动将输出重定向到日志文件,方便便于 the code > 示例:

bash
 
 
# 格式:任务命令 >> 日志文件路径 2>&1
*/1 * * * * /usr/bin/echo "test" >> /var/log/mycron.log 2>&1
  • >>:追加输出到文件(不会覆盖历史日志)
  • 2>&1:将错误输出(stderr)合并到标准输出(stdout),确保错误信息也被记录

之后直接查看该日志文件即可:

bash
cat /var/log/mycron.log
tail -f /var/log/mycron.log  # 实时查看日志
 

2. 查看系统级 crontab 日志(依赖系统配置)

部分 Linux 发行版会默认记录 crond 服务的运行日志,可通过系统日志查看任务是否执行(但不一定包含任务具体输出)。

  • CentOS/RHEL 系统:
    bash
     
     
    tail -f /var/log/cron  # 查看 crontab 执行记录
    
     
  • Ubuntu/Debian 系统:
    日志通常由 rsyslog 管理,需要先确认是否启用了 cron 日志:
    bash
     
     
    # 查看配置
    grep cron /etc/rsyslog.d/50-default.conf
    
    # 若配置了 cron.* /var/log/cron.log,则查看日志
    tail -f /var/log/cron.log
    
     
  • 通过 journalctl 查看(适用于 systemd 系统):
    bash
     
     
    journalctl -u cron  # 查看 cron 服务日志
    journalctl -u cron --since "10 minutes ago"  # 查看最近10分钟的日志
    
     

3. 排查任务未执行的问题

如果任务没按预期执行,可结合以下方法排查:

  1. 检查系统日志确认 crond 服务是否正常运行:
    bash
     
     
    systemctl status crond  # CentOS
    systemctl status cron   # Ubuntu
    
     
  2. 确认任务命令在手动执行时是否正常(避免环境变量差异导致的问题)。
  3. 在任务中显式指定环境变量,例如:
    bash
    */1 * * * * PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin /path/to/script.sh >> /var/log/script.log 2>&1
    
     

通过以上方法,既能查看任务的具体执行输出,也能确认 crontab 服务本身的运行状态。推荐优先使用「手动重定向日志」的方式,更灵活且能记录任务详情。

-----------------------------------------------------------------

linux 如何查看shell的执行日志
在 Linux 中查看 shell 脚本的执行日志,需要根据实际需求配置日志记录方式,常用方法如下:

1. 手动记录脚本执行日志(最常用)

在 shell 脚本中添加日志输出配置,将执行过程、结果和错误信息记录到指定文件。

示例脚本(test.sh):

bash
 
 
#!/bin/bash
# 定义日志文件路径
LOG_FILE="/var/log/myscript.log"

# 记录脚本开始时间
echo "[$(date +'%Y-%m-%d %H:%M:%S')] 脚本开始执行" >> "$LOG_FILE"

# 执行命令并记录日志(将输出和错误都写入日志)
echo "执行备份操作..." >> "$LOG_FILE"
cp /etc/passwd /tmp/ 2>> "$LOG_FILE"  # 错误信息单独记录
echo "备份完成" >> "$LOG_FILE"

# 记录脚本结束时间
echo "[$(date +'%Y-%m-%d %H:%M:%S')] 脚本执行结束" >> "$LOG_FILE"
echo "----------------------------------------" >> "$LOG_FILE"
 

关键技巧:

  • 使用 >> 追加日志(> 会覆盖日志)
  • 2>> log.txt 单独记录错误信息
  • command >> log.txt 2>&1 将标准输出和错误输出合并到日志

2. 使用 set -x 开启执行过程追踪

在脚本中添加 set -x 可以打印每一行执行的命令及其参数,便于调试。

示例:

bash
 
 
#!/bin/bash
set -x  # 开启命令追踪(会输出到 stdout)
LOG_FILE="/var/log/myscript_detail.log"

# 将追踪日志重定向到文件
exec > "$LOG_FILE" 2>&1

# 脚本内容
echo "开始执行"
ls /tmp/
echo "执行结束"
 

  • set -x:显示执行的每一条命令(前缀为 +
  • exec > log.txt 2>&1:将整个脚本的输出重定向到日志文件

3. 查看系统级 shell 执行记录(有限制)

如果需要监控所有用户的 shell 执行记录,可以通过以下方式:

  • 使用 history 命令:
    查看当前用户的历史命令(默认记录在 ~/.bash_history):
    bash
     
     
    history  # 查看历史命令
    cat ~/.bash_history  # 直接查看历史文件
    
     

    注意:history 仅记录交互 shell 的命令,不记录脚本执行的详细过程。
  • 通过审计工具 auditd
    高级审计工具,可记录特定命令的执行:
    bash
     
     
    # 安装 auditd(CentOS示例)
    sudo yum install auditd
    
    # 添加审计规则(监控 /bin/bash 执行)
    sudo auditctl -a exit,always -F arch=b64 -F euid=0 -F comm=bash
    
    # 查看审计日志
    sudo ausearch -c 'bash'
    
     

4. 实时查看脚本运行日志

如果脚本正在执行,可用 tail 实时监控日志:

bash
 
 
tail -f /var/log/myscript.log  # 实时输出新增日志
tail -n 100 /var/log/myscript.log  # 查看最后100行

总结

  • 开发脚本时,推荐主动添加日志输出(方法 1),清晰记录关键步骤和结果。
  • 调试阶段,结合 set -x(方法 2)可以追踪每一步执行细节。
  • 系统级审计用 auditd,但配置较复杂,适合安全监控场景。

 

-----------------------------------------------------------------

 

出现 Permission denied(权限被拒绝)错误,说明当前用户没有执行 /opt/backup/mysql-lcims/mysql-bak.sh 脚本的权限。解决方法如下:

1. 检查脚本的执行权限

首先查看脚本的权限设置:

 

bash
 
 
ls -l /opt/backup/mysql-lcims/mysql-bak.sh
 

 

输出类似如下内容(重点看 rwx 权限部分):

 

plaintext
 
 
-rw-r--r-- 1 root root 1234 8月  15 10:00 /opt/backup/mysql-lcims/mysql-bak.sh
 

 

  • 若没有 x(执行权限),则需要添加执行权限。

2. 给脚本添加执行权限

使用 chmod 命令赋予脚本执行权限:

 

bash
 
 
# 给所有者添加执行权限(最常用)
chmod u+x /opt/backup/mysql-lcims/mysql-bak.sh

# 或给所有用户添加执行权限(谨慎使用)
chmod +x /opt/backup/mysql-lcims/mysql-bak.sh
 

 

执行后再次检查权限,确认出现 x

 

plaintext
 
 
-rwxr--r-- 1 root root 1234 8月  15 10:00 /opt/backup/mysql-lcims/mysql-bak.sh
 

3. 检查脚本所在目录的权限

如果脚本本身有执行权限,但所在目录没有访问权限,也会导致错误。检查目录权限:

 

bash
 
 
ls -ld /opt/backup/mysql-lcims/
 

 

确保当前用户对该目录有 r(读取)和 x(进入)权限,若没有,可修改目录权限:

 

bash
 
 
chmod u+rx /opt/backup/mysql-lcims/
 

4. 确认用户是否有权限访问

如果脚本或目录属于 root 等其他用户,当前普通用户可能无权操作,可:

 

  • 切换到有权限的用户(如 sudo -i 切换到 root)
  • 或使用 sudo 执行脚本(需要当前用户在 sudo 列表中):
    bash
    sudo /opt/backup/mysql-lcims/mysql-bak.sh
    
     

5. 特殊情况:脚本所在分区挂载为只读

如果脚本所在的分区被挂载为只读模式,也会导致权限错误。检查挂载状态:

 

bash
 
 
mount | grep /opt  # 查看/opt所在分区的挂载参数

 

若有 ro(只读),需要重新挂载为可读写:

 

bash
sudo mount -o remount,rw /opt  # 假设/opt是单独分区
完成以上步骤后,再次执行脚本通常即可解决权限问题。

-----------------------------------------------------------------

-----------------------------------------------------------------

-----------------------------------------------------------------

-----------------------------------------------------------------

-----------------------------------------------------------------

-----------------------------------------------------------------

-----------------------------------------------------------------

-----------------------------------------------------------------

-----------------------------------------------------------------

-----------------------------------------------------------------

-----------------------------------------------------------------

-----------------------------------------------------------------

-----------------------------------------------------------------

-----------------------------------------------------------------

-----------------------------------------------------------------

-----------------------------------------------------------------

-----------------------------------------------------------------

-----------------------------------------------------------------

-----------------------------------------------------------------

-----------------------------------------------------------------

-----------------------------------------------------------------

-----------------------------------------------------------------

-----------------------------------------------------------------

-----------------------------------------------------------------

-----------------------------------------------------------------

-----------------------------------------------------------------

-----------------------------------------------------------------

-----------------------------------------------------------------

-----------------------------------------------------------------

-----------------------------------------------------------------

-----------------------------------------------------------------

-----------------------------------------------------------------

-----------------------------------------------------------------

-----------------------------------------------------------------

-----------------------------------------------------------------

-----------------------------------------------------------------

-----------------------------------------------------------------

-----------------------------------------------------------------

-----------------------------------------------------------------

-----------------------------------------------------------------

-----------------------------------------------------------------

-----------------------------------------------------------------

-----------------------------------------------------------------

-----------------------------------------------------------------

-----------------------------------------------------------------

-----------------------------------------------------------------

-----------------------------------------------------------------

-----------------------------------------------------------------

-----------------------------------------------------------------

-----------------------------------------------------------------

-----------------------------------------------------------------

-----------------------------------------------------------------

-----------------------------------------------------------------

-----------------------------------------------------------------

-----------------------------------------------------------------

-----------------------------------------------------------------

-----------------------------------------------------------------

-----------------------------------------------------------------

-----------------------------------------------------------------

-----------------------------------------------------------------

-----------------------------------------------------------------

-----------------------------------------------------------------

-----------------------------------------------------------------

-----------------------------------------------------------------

-----------------------------------------------------------------

-----------------------------------------------------------------

-----------------------------------------------------------------

-----------------------------------------------------------------

-----------------------------------------------------------------

-----------------------------------------------------------------

-----------------------------------------------------------------

-----------------------------------------------------------------

-----------------------------------------------------------------

-----------------------------------------------------------------

-----------------------------------------------------------------

-----------------------------------------------------------------

-----------------------------------------------------------------

-----------------------------------------------------------------

-----------------------------------------------------------------

-----------------------------------------------------------------

-----------------------------------------------------------------

-----------------------------------------------------------------

-----------------------------------------------------------------

-----------------------------------------------------------------

-----------------------------------------------------------------

-----------------------------------------------------------------

-----------------------------------------------------------------

-----------------------------------------------------------------

-----------------------------------------------------------------

-----------------------------------------------------------------

-----------------------------------------------------------------

-----------------------------------------------------------------

-----------------------------------------------------------------

-----------------------------------------------------------------

-----------------------------------------------------------------

-----------------------------------------------------------------

-----------------------------------------------------------------

-----------------------------------------------------------------

-----------------------------------------------------------------

-----------------------------------------------------------------

-----------------------------------------------------------------

-----------------------------------------------------------------

-----------------------------------------------------------------

-----------------------------------------------------------------

-----------------------------------------------------------------

posted @ 2025-08-15 08:52  hanease  阅读(139)  评论(0)    收藏  举报