gpt4 book ai didi

linux - 当脚本命令以 su -c command -m user 运行时缺少文件输出

转载 作者:太空宇宙 更新时间:2023-11-04 12:40:01 27 4
gpt4 key购买 nike

我有一个脚本需要检查是否存在只有 root 可以访问的锁定文件,然后该脚本运行需要以不同用户身份运行的实际测试脚本。

问题是测试脚本应该生成 xml 文件,但这些文件不存在。 (也就是我找不到它们)

脚本的相关部分

if (mkdir ${lockdir} ) 2> /dev/null; then
echo $$ > $pidfile
trap 'rm -rf "$lockdir"; exit $?' INT TERM EXIT

if [ -f "$puppetlock" ]
then
su -c "/opt/qa-scripts/start-qa-test.sh > /var/log/qaTests/test-$(date +\"m-%d-%T\".log" -m "qaUser"

lockdir 是在测试运行时创建的,表示测试过程已经开始。

puppetlock 通过查找 puppet 创建的锁定文件来检查 puppet 是否正在运行。

qaUser 无权检查 puppetlock 是否存在。

start-qa-test.sh 最终调用 java 执行自动化测试。我的 test-date.log 文件显示了测试运行时控制台会看到的内容。

然而,测试应该在名为 target 的目录中生成一些 xml 文件。这些文件丢失了。

如果它是相关的 start-qa-test.sh 正在尝试运行这样的东西

nohup=true

/usr/bin/java -cp .:/folderStuff/$jarFile:/opt/folderResources org.junit.runnt.JUNITCore org.some.other.stuff.Here

运行 start-qa-test.sh 在目标文件夹中生成 xml 输出。但是通过 su -c 运行它却没有。

编辑

我想出了这个问题的答案。

我把这行改成了

su - qaUser -c "/opt/qa-scripts/start-qa-test.sh >/var/log/qaTests/test-$(date +\"m-%d-%T\“.log”

这允许输出显示在/home/qaUser

最佳答案

尝试重定向 stoutstderr 的输出:

su -c "/opt/qa-scripts/start-qa-test.sh > /var/log/qaTests/test-$(date +\"m-%d-%T\".log" -m "qaUser" 2>&1

关于linux - 当脚本命令以 su -c command -m user 运行时缺少文件输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40552406/

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