Cron未在PERL中执行my system()语句

Cron未在PERL中执行my system()语句,perl,shell,cron,centos,crontab,Perl,Shell,Cron,Centos,Crontab,我正在编写一个PERL脚本,它从数据库中添加用户,然后删除数据库。当我执行代码时,代码运行良好 use DBI; use strict; my $database = "database"; my $hostname = "123.4.56.78"; my $port = "3306"; my $user = "user"; my $password = "password"; my $dsn = "DBI:mysql:database=$database;host=$hostname;port

我正在编写一个PERL脚本,它从数据库中添加用户,然后删除数据库。当我执行代码时,代码运行良好

use DBI;
use strict;
my $database = "database";
my $hostname = "123.4.56.78";
my $port = "3306";
my $user = "user";
my $password = "password";
my $dsn = "DBI:mysql:database=$database;host=$hostname;port=$port";
my $dbh = DBI->connect($dsn,$user,$password) or die "Can't connect to database: ", $DBI::errstr, "\n";


my $sql = 'SELECT * FROM somewhere';
my $sth = $dbh->prepare($sql);
$sth->execute();
while (my @row = $sth->fetchrow_array) {
system("useradd -g mygroup -d /home/somewhere/$row[0] -s /sbin/nologin $row[0]");
system("echo $row[0]:$row[1] | chpasswd");
}
my $sql_delete = 'TRUNCATE somewhere';
my $delete = $dbh->prepare($sql_delete);
$delete->execute();
但是,当我通过Crontab执行它时,永远不会执行system()语句,也不会添加用户。不过,它们是从数据库本身删除的

* * * * * perl /var/perl/myperl.pl
日志上每分钟都写着:

Jul 26 15:42:01 ex40 CROND[7028]: (root) CMD (perl /var/perl/myperl.pl)

有什么想法吗?

system()
调用中包括
useradd
的完整路径


Crontab没有获取环境的副本,因此没有设置
PATH
环境变量。

系统()调用中包含
useradd
的完整路径


Crontab没有获取环境的副本,因此没有设置
PATH
环境变量。

尝试将完整路径添加到
useradd
。Crontab未获取环境的副本。
system
返回了什么错误?
useradd
向STDERR发送了什么输出?添加第一行/usr/bin/perl;将cron更改为*****/usr/bin/perl/var/perl/myperl。pl@stevieb成功了,谢谢。您可能希望将is作为正确答案写入。我已将其作为答案。请尝试将完整路径添加到
useradd
。Crontab未获取环境的副本。
system
返回了什么错误?
useradd
向STDERR发送了什么输出?添加第一行/usr/bin/perl;将cron更改为*****/usr/bin/perl/var/perl/myperl。pl@stevieb成功了,谢谢。你可能想写一个恰当的答案。我已经做了一个答案。