我知道我以前追踪过这个,但找不到答案。
当我在 CentOS 7(来自 X Windows GNOME 或 KDE)上启动 bash shell 时,TMOUT设置的变量会导致 shell 在指定的不活动时间段后超时。
该变量是只读的,因此我无法取消设置或更改它!
unset TMOUT
# prints bash: unset: TMOUT: cannot unset: readonly variable
export TMOUT=99999
# prints bash: TMOUT: readonly variable
Run Code Online (Sandbox Code Playgroud)
通常/etc/bashrc设置这些东西。我尝试使用以下方法找到它的设置位置:
grep TMOUT $HOME/.??* /etc/* 2> /dev/null
# not found
Run Code Online (Sandbox Code Playgroud)
所以我认为TMOUT实际上并没有设置/etc/bashrc它,或者它没有按照我正在寻找的方式设置。
已提出其他问题,但它们不一样或没有帮助。
我正在使用一项服务,但它意外死亡(停止)。无论它如何停止,我都想让它自动重启!它已配置,Restart=on-abort并且不会重新启动。我没有编写服务,它来自另一个供应商,所以虽然我想追踪服务崩溃的根本原因,但我还需要一个解决方案来保持系统运行,直到找到根本原因。该服务每天死零到三次,所以不会太频繁。
该服务当前设置Restart=on-abort为在服务文件中定义的/etc/systemd/system/someone-elses.service
那么是什么Restart=on-abort意思呢?
我进行了搜索并了解了 restart= 的不同值的含义,但在手册页中没有找到任何内容:
类似于为什么 echo 调用为 /bin/sh -c echo foo 不输出任何内容?但使用ssh.
为什么这不输出任何内容:
ssh localhost sh -c 'echo "0=$0 1=$1"' arg1 arg2 arg3
Run Code Online (Sandbox Code Playgroud)
但如果我把它改成
ssh localhost sh -c 'true; echo "0=$0 1=$1"' arg1 arg2 arg3
# Output is
0=bash 1= arg1 arg2 arg3
Run Code Online (Sandbox Code Playgroud)
我看到的行为暗示正在运行 echo 命令,但变量替换的工作方式与预期不符。请参阅https://unix.stackexchange.com/a/253424/119816
与上面相同,但删除了 ssh 命令
sh -c 'echo "0=$0 1=$1"' arg1 arg2 arg3
# Output is
0=arg1 1=arg2
# Adding true gives same output
sh -c 'true; echo "0=$0 1=$1"' arg1 arg2 …Run Code Online (Sandbox Code Playgroud)