关于crontab的问题,求解!

关于crontab的问题,求解!

本人已所搜并浏览过本论坛的相关的文章!
对crontab有了不少了解,但是还有一个问题我想提出!
如果在执行时,遇到切换用户的命令,还能执行下去吗?
举个简单的例子!
仅两条命令:
su guest1       //切换用户
buckup .....     //执行备份或其他什么
上面这样能顺利执行吗?
上面的问题一直没有得到解决
我来把问题说的具体一点
我是想用crontab给PostgreSQL数据库做备份
数据库有个postgres用户,为超级管理员
我一般备份用以下步骤:
    -进入终端
    -su postgres
    -pg_dump dbname > /database/backup/dbname.dump[/list:u]
    现在想让后台自动每天完成备份
    于是写了
    [code:1]#!/bin/sh
    su postgres
    pg_dump dbname > /database/backup/dbname.dump[/code:1]
    此文件名为“aaa.sh”,用户和组为:postgres,权限为可执行。
    然后在终端里面执行
    引用:
    /home/postgres/aaa.sh
    结果只执行了第一步(切换用户),第二步(备份)就执行不下去了。
    于是我修改aaa.sh为
    [code:1]#!/bin/sh
    pg_dump dbname > /database/backup/dbname.dump[/code:1]
    然后在终端里,执行
    引用:
    su postgres
    /home/postgres/aaa.sh
    备份成功!
    不过这种备份和手动完成差不了多少,要一次完成两个动作才能称为自动!

    现在连执行都成问题,更不要说后台自动完成了。
    我希望能发现问题出在哪里,是哪方面的问题,解决之路在何方?
    特向各位求助!
转到超级用户下是要用密码的,你只是su了,不输入密码,当然第二步执行不了了!
你可以用crontab给你的超级用户建个cron守护程序,这样到时候就可以自动执行了!参考一下代码:
[code:1]
0 17 * * * 'pg_dump dbname > /database/backup/dbname.dump'[/code:1]
这是在每天的下午五点自动执行后面的命令

可以先建个名为postgrescron的文件,文件内容为:
[code:1]
#backup the files everyday as postgrescron at 17:00
0 17 * * * 'pg_dump dbname > /database/backup/dbname.dump'[/code:1]
然后用你的超级用户,执行下面的命令:
[code:1]crontab postgrescron[/code:1]
这样在你的/var/spool/cron/crontabs/下就多了一个名为postgrescron的文件,试试看可以吗?
这个postgres并不是系统的超级用户
而是数据库的管理员,当然一定要在系统中存在!
如果我注销root,用postgres登录
进入终端,直接敲
pg_dump dbname > /database/backup/dbname.dump,也是无法备份的!
这点也比较奇怪,每次要在root下,用su切换,然后备份才能成功!
还有我/var/spool/cron下,没有crontabs文件,是不是需要建立一个!文件的格式是什么样的?
你用的是redhat吧,那就应该在/ v a r / s p o o l / c r o n下直接生成一个postgres的文件
为什么直接敲上那行不行呢,等我明天再给你试试那个脚本,今天太晚了:)
忽然感觉你这个有点问题,不过只能等明天了,明天给你试试!
我也试过用
引用:
crontab -u postgres -e
给postgres用户指定一个执行的命令
引用:
30 4 * * * pg_dump dbname > /database/backuo/dbname.dump
结果在/var/spool/cron/下,是生成了一个postgres文件
但是就是不能得到执行!
其实就是和我在postgres用户下,不能直接执行备份命令的情况是一样的!
一定要在root下用su命令转换到postgres,再来执行备份,太奇怪了!
顺便谢谢楼上的好心人!^_^
pg_dump这个命令的路径是什么,在crontab里好象是要写上命令的实际路径,比如ls,就要写/bin/ls,你先试试这个!
nohup