小编Rud*_*dra的帖子

Bash脚本手动运行,但在crontab上失败

我是shell脚本的新手.我编写了一个shell脚本来对MySQL数据库进行增量备份.脚本采用可执行格式,手动执行时运行成功,但通过crontab执行时失败.

Crontab条目是这样的:

*/1 * * * * /home/db-backup/mysqlbackup.sh
Run Code Online (Sandbox Code Playgroud)

下面是shell脚本代码 -

#!/bin/sh
MyUSER="root"       # USERNAME
MyPASS="password"         # PASSWORD
MyHOST="localhost"  # Hostname
Password="" #Linux Password

MYSQL="$(which mysql)"
if [ -z "$MYSQL" ]; then
echo "Error: MYSQL not found"
exit 1
fi
MYSQLADMIN="$(which mysqladmin)"
if [ -z "$MYSQLADMIN" ]; then
    echo "Error: MYSQLADMIN not found"
    exit 1
fi
CHOWN="$(which chown)"
if [ -z "$CHOWN" ]; then
    echo "Error: CHOWN not found"
    exit 1
fi
CHMOD="$(which chmod)"
if [ -z "$CHMOD" ]; then
    echo …
Run Code Online (Sandbox Code Playgroud)

bash shell cron

13
推荐指数
3
解决办法
4万
查看次数

Perl:如何用变量替换变量

假设,如果一个表有一个名为test的列,并且我在内部测试中写了一行"Dear $ name,Hello",其中$ name是一个变量.我需要选择我正在做的这一行

my $test = $dbh->prepare( "select test from testing") 
Run Code Online (Sandbox Code Playgroud)

在脚本中我已经分配了$ name ="Joe".现在,我需要将$ name变量替换为脚本中指定的变量名称(即Joe).我试过打印$ test.它打印"亲爱的名字,你好"我怎么能这样做.

regex string perl perl-module

2
推荐指数
1
解决办法
171
查看次数

无法通过包找到对象方法"strftime"

我编写了一个perl脚本,在其中调用子例程将字段插入数据库表.子例程在另一个文件Test.pm中调用,而不是主perl文件Test.pl. 在Test.pm中,我有以下字段要插入表中

my $date = localtime->strftime('%Y-%m-%d %H:%M:%S');
my $time = localtime->strftime('%H:%M:%S');
Run Code Online (Sandbox Code Playgroud)

但是,在这里我得到以下错误

Can't locate object method "strftime" via package 
Run Code Online (Sandbox Code Playgroud)

这是什么错误,为什么会发生这种错误.如果我传递$date$time来自的参数Test.pl,脚本工作正常,我该如何解决?

以下是子程序:

sub send_message
{
     my $date = localtime->strftime('%Y-%m-%d %H:%M:%S');
     my $time = localtime->strftime('%H:%M:%S');
     print "Date : $date Time : $time";
     my $sql1 = "Insert into testtable(time,date) values('$time','$date')";
     my $sth1 = $dbh->prepare($sql1);
        $sth1->execute
        or die "SQL Error: $DBI::errstr\n";
     return;
}
Run Code Online (Sandbox Code Playgroud)

perl datetime

1
推荐指数
2
解决办法
3876
查看次数

如何将空字符串复制到文件

我编写了一个perl脚本,在某些情况下我必须将空字符串复制到文件中.
例如,$str是一个包含MySQL表中行数的变量.
假设表中没有行,则将空字符串复制到变量中$str.存储的值$str需要复制到另一个文件.我怎样才能做到这一点?当我试图复制时,我得到了这个警告:

Use of uninitialized value $str in string at test.pl line 23
Run Code Online (Sandbox Code Playgroud)

string perl file

0
推荐指数
1
解决办法
85
查看次数

如何在crontab上执行perl脚本

我编写了一个perl脚本test.pl,它使用了另一个文件测试.pm编写的子程序.我能够手动成功运行此脚本,但是当我在crontab上运行相同的脚本时,我收到以下错误: 我已将这两个文件的权限更改为执行权限并在脚本顶部使用.如何在crontab上成功运行脚本.
Can't locate testing.pm in @INC
"use testing"

Crontab : */2 * * * * PERL5LIB=$PERL5LIB:/home/test/testing.pm /home/test/test.pl > /home/test/test.log 2>&1

**

test.pl  
#!/usr/bin/perl -w
 use DBI;
 use warnings;
 use Time::Piece;
 use HTML::Entities;
 use lib '/home/test';
 use testing
# Connecting to the database #
my $dbh = DBI->connect("DBI:mysql:database=test;host=localhost;mysql_socket=/var/run/mysqld/mysqld.sock","root","password", {'RaiseError' => 1});
# my $dob = '2009-04-21 00:00:00';
my $dob = '2009-04-22 00:00:00';
#my $dob = localtime->strftime('%Y-%m-%d %H:%M:%S');
print "\ndob : $dob\n";
$name="test";
$number=1;
$email="test@test.com"
$id="123";
if ($mail==0)
{
 send_msg(0,$name,$number,$email,$aid);
} …
Run Code Online (Sandbox Code Playgroud)

perl cron

0
推荐指数
1
解决办法
3916
查看次数

标签 统计

perl ×4

cron ×2

string ×2

bash ×1

datetime ×1

file ×1

perl-module ×1

regex ×1

shell ×1