Cron没有在PERL中执行我的system()语句

时间:2016-07-26 13:50:43

标签: perl shell cron centos crontab

我正在开发一个PERL脚本,用于从数据库添加用户,然后删除数据库。执行时代码工作正常。

true

但是当我通过Crontab执行它时,系统()语句永远不会执行,并且不会添加用户。它们会从数据库本身中删除。

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();

日志说每分钟:

* * * * * perl /var/perl/myperl.pl

有什么想法吗?

1 个答案:

答案 0 :(得分:4)

useradd来电中包含system()的完整路径。

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