gpt4 book ai didi

linux - 等待 bash 脚本直到复制完成

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:09:39 24 4
gpt4 key购买 nike

我正在我的树莓派上做实验,我想在任何 USB 设备插入我的树莓派时运行一个 bash 脚本。为了自动挂载 USB 设备,我使用了 usbmount。我创建了一个 udev 规则,只要插入 USB,它就会在/usr/local/bin/script.sh 运行一个 shell 脚本。 shell脚本的内容是:

#!/bin/sh
echo "Device plugged" >> /tmp/test.log
sudo echo 1 > /sys/class/leds/led0/brightness
sudo mkdir /home/pi/usbdata
sleep 5
sudo cp -r /media/usb0/* /home/pi/usbdata/
//I have to wait until the copying finishes
sudo echo 0 > /sys/class/leds/led0/brightness

插入 USB 时我观察到,OK LED 亮起,等待 5 秒,然后熄灭,表示脚本已完成执行。文件夹 /home/pi/usbdata 已创建,但没有任何内容复制到其中。当脚本完成执行时,复制过程是否会中止?为什么文件没有被复制?我确保 USB 仅安装在 /media/usb0/ 并且我使用 sudo 来避免任何权限错误..

哪里出了问题? :)

最佳答案

你能试试这个吗?

...
sleep 5
fn=/tmp/usb-`date +%H%M%S`.txt
ls -l /media/usb0/ > $fn
sudo cp -r /media/usb0/* /home/pi/usbdata/ >> $fn 2>&1
rc=$?
if [ $rc != 0 ]; then
echo "Error: $rc" >> $fn
fi
...

man 8 sudo 读取:

Upon successful execution of a program, the exit status from sudo will simply be the exit status of the program that was executed.

Otherwise, sudo exits with a value of 1 if there is a configuration/permission problem or if sudo cannot execute the given command. In the latter case the error string is printed to the standard error.

sudo 真的可以在没有人为输入任何密码的情况下运行吗?

关于你的问题

When the script finishes executing, will the copy process abort if it is in progress?

cp 的调用将阻塞,直到复制真正完成。所以根本原因一定是别的原因。

关于linux - 等待 bash 脚本直到复制完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21364418/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com