我想阻止我的程序将 stdout 和 stderr 发送到任何终端、文件或设备。为此,我想到了三个命令,但我无法区分它们的区别。请你向我解释一下它们每个的含义。
# ./run > /dev/null
# ./run > /dev/null 1>&2
# ./run > /dev/null 2>&1
Run Code Online (Sandbox Code Playgroud) 我的系统中有很多断开的链接。我写了一个脚本来重新链接所有断开的链接。但是,在脚本运行后, find 将再次向我显示链接仍然存在。
这是我的代码:
find /home/saman -lname '/home/saman/*' -exec \
sh -c 'ln -snf "/home$(readlink "$0")" "$0"' {} \;
Run Code Online (Sandbox Code Playgroud)
运行上面的命令后,我搜索断开的链接并仍然找到它们:
find . -type l | xargs file | grep broken
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
crontab奇怪的是没有执行我的脚本,尽管脚本从 shell 终端运行得很好。我已经确保脚本通过一个新的行空间彼此分开。但是,我对脚本的内容表示怀疑。crontab执行run.sh稍后将运行main.sh。
这是/etc/crontab:
* * */3 * * root source /opt/db_maintain/run.sh
Run Code Online (Sandbox Code Playgroud)
这是从内部run.sh调用的内容main.sh:
#!/usr/bin/env bash
#********* Saman *********
TM=$(date --date='40 days ago' '+%F %T')
TARGET=/opt/db_maintain/main.sh
TIMESTAMP=$(echo ${TM} | tr --delete ': -')
export TIMESTAMP
source $TARGET "$TM"
Run Code Online (Sandbox Code Playgroud)
这是开头main.sh:
#!/bin/bash
##!/usr/bin/env bash
#
# main program entry point
#
source /opt/db_maintain/functions.sh
source /opt/db_maintain/constants.sh
source /opt/db_maintain/settings.sh
source /root/PASSWD_PGRS.sh
#read -s -t 0 -n 9999
#read -s -p …Run Code Online (Sandbox Code Playgroud)