我编写了一个 bash 脚本并且它在后台运行,在这个脚本中我使用了以下命令:
sshpass -p prakash123 ssh -t -p $1 prakash@localhost './update_script.sh > /update.out 2> /update.err < /dev/null | echo $! > /update.pid &'
它工作正常。但我想更改的位置/update.out
,/update.err
因此/update.pid
修改了命令:
sshpass -p prakash123 ssh -t -p $1 prakash@localhost './update_script.sh > /pra/log/update.out 2> /pra/log/update.err < /dev/null | echo $! > /pra/log/update.pid &'
现在我收到了权限被拒绝错误。
因为我更改了输出文件的路径。我不确定,但我认为我必须授予超级用户权限,例如su
或sudo
之前sshpass
那么我如何从上述命令更改/update.out
和此文件/update.err
的路径/update.pid
?
答案1
在第一个命令中,您将输出写入到您具有写访问权限的位置,因此一切都很好。
现在该/pra
目录默认不存在,因此我假设您已使用 root 访问权限创建了它。因此,要写入它,您也必须使用 root 访问权限。只需sudo
在命令中添加以下内容:
sudo sshpass -p prakash123 ssh -t -p $1 prakash@localhost './update_script.sh > /pra/log/update.out 2> /pra/log/update.err < /dev/null | echo $! > /pra/log/update.pid &'
但是,我建议您写入$HOME
dir 中的目录并授予其rwx------
权限(即,您具有读/写/执行权限,而其他人则无权限),而不是这样做。这样您就不必使用sudo.