小编Phi*_*Bot的帖子

如何终止 Linux tee 命令而不终止它接收的应用程序

我有一个 bash 脚本,只要 Linux 机器开机就可以运行。我按如下所示启动它:

( /mnt/apps/start.sh 2>&1 | tee /tmp/nginx/debug_log.log ) &
Run Code Online (Sandbox Code Playgroud)

启动后,我可以在ps输出中看到 tee 命令,如下所示:

$ ps | grep tee
  418 root       0:02 tee /tmp/nginx/debug_log.log
3557 root       0:00 grep tee
Run Code Online (Sandbox Code Playgroud)

我有一个函数可以监视tee生成的日志的大小,并在日志达到一定大小时终止tee命令:

monitor_debug_log_size() {
                ## Monitor the file size of the debug log to make sure it does not get too big
                while true; do
                                cecho r "CHECKING DEBUG LOG SIZE... "
                                debugLogSizeBytes=$(stat -c%s "/tmp/nginx/debug_log.log")
                                cecho r "DEBUG LOG SIZE: $debugLogSizeBytes"
                                if [ $((debugLogSizeBytes)) …
Run Code Online (Sandbox Code Playgroud)

linux scripting kill pipe tee

20
推荐指数
1
解决办法
4996
查看次数

BusyBox 日期命令使用 UNIX 时间戳设置时间

在 bash 中,以下内容适用于从 UNIX 时间戳(从 epoch 开始的秒数)设置日期:

date +%s -s @`date +%s`
Run Code Online (Sandbox Code Playgroud)

在 Busybox 中,这不起作用。如何使用 Busybox 对 date 命令执行相同操作?谢谢。

linux date busybox

8
推荐指数
1
解决办法
7347
查看次数

systemd-journald 持久日志不适用于绑定挂载 /var/log

我正在使用 Yocto 为 SystemD 版本 241 的小型嵌入式 Linux 系统生成自定义映像。根文件系统是只读的。我使用绑定安装和overlayfs 使/var/log/journal 目录存在于单独的读/写分区上。我有一个问题,systemd-journald 得到“Amnesia”并且不记得以前的引导日志,即使它们在持久的读/写文件系统上。这意味着即使日志文件在文件系统上存在且有效,日志也无法访问或清除以前启动时的旧日志文件。

Yocto 易失性绑定

# Setup overlayfs binds for various RW files
VOLATILE_BINDS_append = " \
    /persistent-storage/var/log /var/log\n\
"
Run Code Online (Sandbox Code Playgroud)

路径 /var/log 存在:

root@me:/var/log# cd /var/log/
root@me:/var/log# ls -lrt
total 9
drwxr-xr-x 2 root root            1024 Jun  3 01:50 nginx
-rw-r--r-- 1 root root            5260 Jun  9 17:56 messages
drwxr-sr-x 5 root systemd-journal 1024 Jun  9 18:00 journal
root@me:/var/log# ls -lrt journal/
total 3
drwxr-sr-x 2 root systemd-journal 1024 Jun  9 …
Run Code Online (Sandbox Code Playgroud)

systemd yocto journalctl systemd-journald systemctl

5
推荐指数
1
解决办法
1105
查看次数

将脚本输出重定向到 /dev/tty1 并将输出捕获到文件

我想在控制台上显示文本输出,该文本输出始终显示在我的 Raspberry Pi 上的小屏幕上。

以下代码用于显示文本输出:

cd /home/pi/python_test_scripts_linux && sudo nice -n -20 /home/pi/python_test_scripts_linux/test_wrapper.py > /dev/tty1
Run Code Online (Sandbox Code Playgroud)

现在我想在屏幕上看到输出的同时捕获输出 - 我尝试过“tee”,但它不会在屏幕上显示文本,也不会将其捕获到文件中:

cd /home/pi/python_test_scripts_linux && sudo nice -n -20 /home/pi/python_test_scripts_linux/test_wrapper.py | tee /dev/tty1 /tmp/capture.txt
Run Code Online (Sandbox Code Playgroud)

如何将脚本的输出重定向到,/dev/tty1以便我可以在屏幕上看到它,同时还将输出捕获到文件中?

更新1:

根据下面的答案 - 我尝试使用“脚本” - 不幸的是它不起作用:

script -c "cd /home/pi/python_test_scripts_linux && sudo nice -n -20 /home/pi/python_test_scripts_linux/test_wrapper.py > /dev/tty1" /home/pi/python_test_scripts_linux/report.html
Run Code Online (Sandbox Code Playgroud)

更新2:

我还尝试将输出重定向到 /dev/tty1 的文件的输出,但它也不起作用:

sudo tail -F /home/pi/python_test_scripts_linux/report.html > /dev/tty1 &
cd /home/pi/python_test_scripts_linux && sudo nice -n -20 /home/pi/python_test_scripts_linux/test_wrapper.py > /home/pi/python_test_scripts_linux/report.html 
Run Code Online (Sandbox Code Playgroud)

linux bash io-redirection tty tee

4
推荐指数
1
解决办法
9307
查看次数