我想在备份后删除日志文件,删除需要 root 权限,想用 expect 实现,但删除时提示找不到文件:
rm: 无法删除"/var/log/nginx/access.log.*": 没有那个文件或目录
实际这些文件都是存在的。
我的日志文件目录在 /var/log/nginx,日志名是 access.log.1 access.log.2.gz 这些,都已经备份到文件服务器了。
我在 /home/myuser 中执行脚本
我的脚本:
/home/myuser/rmlog.sh
[bash]
#!/bin/bash
log_dir=/var/log/nginx
expect <<!
spawn sudo rm $log_dir/access.log.*
expect "password for myuser"
set timeout 300
send "mypassword\r"
send "exit\r"
expect eof
!
[/bash]
我哪里写错了吗?应该怎么弄呢?
(已解决)用 expect 删除文件时提示找不到文件,怎么回事呢?
-
- 帖子: 144
- 注册时间: 2010-07-13 17:04
(已解决)用 expect 删除文件时提示找不到文件,怎么回事呢?
上次由 alober 在 2013-06-13 19:08,总共编辑 1 次。
-
- 帖子: 1453
- 注册时间: 2008-05-24 8:30
Re: 用 expect 删除文件时提示找不到文件,怎么回事呢?
因为 rm 不会文件名扩展,expect 我不熟悉,但是根据运行结果看,expect 也不进行文件名扩展。而你在 shell 下运行,shell 会执行变量名扩展和文件名扩展,将 $log_dir/access.log.* 变为 /var/log/nginx/access.log.1 /var/log/nginx/access.log.2.gz。
-
- 帖子: 144
- 注册时间: 2010-07-13 17:04
Re: 用 expect 删除文件时提示找不到文件,怎么回事呢?
试了一下,确实如楼上所言。
这样的话要写个 find 取得实际的文件名了。
感谢指点。
这样的话要写个 find 取得实际的文件名了。
感谢指点。