用perl的expect模块进行后台自动执行的问题

用perl的expect模块进行后台自动执行的问题

向大家请教一个问题:

    我用perl的expect模块在solaris的系统上编写自动登陆路由器的程序,然后从一台windows的pc上,利用secur CRT远程telnet到这个solarisi系统上,执行./test.pl,程序运行正常,没有问题。
    但是如果想把该程序放到后台执行,即./test.pl& 或者通过cron来执行,则程序不能实现自动登陆路由器的功能,我看了exploring expect这本书,它上面说expect可以在后台执行,但是我理解,它是指的普通的expect,而不是perl的expect模块。
    我试了好多次,总是不能后台执行自动登陆,请高手赐教,谢谢。
该问题类似Daemon + Exect, 搜以前贴子吧.
想办法打印错误讯息..
xxx.pl 1>/tmp/log.txt 2>&1
然後再看log.txt里面的讯息..
后台不能执行99%都是环境变量的问题。

将你的脚本里面的文件、命令都改成绝对路径试试看。
谢谢指教,我把路径改成绝对路径后就可以了,现在已经可以在后台运行了。

非常感谢楼上。


此外,我想请教apile大侠,xxx.pl 1>/tmp/log.txt 2>&1 这句话里的第一个“1”,以及"2>&1"是什么意思啊,
直接用xxx.pl > /tmp/log.txt 不是也可以达到输出吗?

非常谢谢!!


QUOTE:
原帖由 zljjg2000 于 2008-1-4 14:00 发表
谢谢指教,我把路径改成绝对路径后就可以了,现在已经可以在后台运行了。

非常感谢楼上。


此外,我想请教apile大侠,xxx.pl 1>/tmp/log.txt 2>&1 这句话里的第一个“1”,以及"2>&1"是什么意思啊,
直 ...

1,2是shell中的文件FD
在 shell 程式中,最常使用的 FD 大概有三個,分別為:
0: Standard Input (STDIN)
1: Standard Output (STDOUT)
2: Standard Error Output (STDERR)

1>/tmp/log.txt与>/tmp/log.txt是一样的
2>&1就是将STDERR重定向到STDOUT,原本输出到STDERR的信息就会输出到STDOUT

有兴趣可以参看Shell版的十三问:
http://bbs.chinaunix.net/viewthr ... p;page=7#pid1636825
谢谢楼上,我明白了