Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 如何在fedora系统中每小时运行一个perl脚本。我有一个perl脚本,它将检查IP中的端口是否打开_Linux_Perl_Crontab - Fatal编程技术网

Linux 如何在fedora系统中每小时运行一个perl脚本。我有一个perl脚本,它将检查IP中的端口是否打开

Linux 如何在fedora系统中每小时运行一个perl脚本。我有一个perl脚本,它将检查IP中的端口是否打开,linux,perl,crontab,Linux,Perl,Crontab,我有一个perl脚本,它将检查IP中的端口是否打开。我希望这个脚本在linux系统中每小时运行一次。请提供建议。代码如下所示 #!/usr/bin/perl use DBI; use strict; use warnings; my $dsn = 'dbi:mysql:dbname:localhost:3306'; my $dbh = DBI->connect('dbi:mysql:dbname:localhost:3306',"root7","pass"

我有一个perl脚本,它将检查IP中的端口是否打开。我希望这个脚本在linux系统中每小时运行一次。请提供建议。代码如下所示

#!/usr/bin/perl
use DBI;
use strict;
use warnings;

my $dsn = 'dbi:mysql:dbname:localhost:3306';
                my $dbh = DBI->connect('dbi:mysql:dbname:localhost:3306',"root7","pass");
                if(!$dbh)
                {                    
                    print "Not Connnected";
                }
                else
                {
                    print "Connnected";

                my @temp;
                my $tmp=time();
                my @timeData = localtime(time);
                $temp[0] = $timeData[2].":".$timeData[1].":".$timeData[0];
                $temp[1] = $timeData[3]."-".($timeData[4]+1)."-".($timeData[5]+1900);

                my $filename = 'log_c.txt';
                open(my $fh, '>', $filename) or die "Could not open file '$filename' $!";
                print $fh "date:$temp[1]: Time:$temp[0]\n";
                close $fh;
                #print "done\n"

                undef @timeData;
                undef $tmp;
                undef @temp;

                }
这就是为什么

您可以使用命令
crontab-e
创建一个cronjob。cron作业是关于运行特定作业的频率以及要运行的命令或shell脚本的规范

例如,要每小时运行一次Perl脚本:

0 * * * * /usr/home/foo/perscript.pl
前五列是时间规范(参见crontab手册第5节:
man crontab-s5
)。但是,cron依赖于一个
守护进程
,该守护进程每分钟启动crontab任务,以检查各种crontab表(因为每个用户都可以有一个),查看是否有任何任务要运行。还有一个许可方案,允许一些人运行cron作业,而拒绝其他人运行cron作业

在一个答案中通读整个crontab设置有点难——特别是因为不同的系统之间有一些细微的变化。不过,现在您已经了解了crontab,可以使用谷歌搜索了

您可以使用cron(用于调度事情的系统内置功能)或包含

use Proc::Daemon;
库来设置脚本作为守护进程工作

并指明

Proc::Daemon::Init;
您可以启用脚本的此守护程序功能。访问控制认为这可能有点乏味,因此我建议您在新的“服务”中添加一个控制脚本,如下所示:

(我再说一遍,cron方法更方便,这样您就可以运行自己的服务了)


您应该请求管理员创建cron作业的权限,或者允许管理员创建此作业。 每小时运行的cron作业具有以下规范:

3 * * * * absolute_path/your_program_name  optional_parameters  optional_redirections
在本例中,cron作业将在第3分钟每小时启动一次。
如果一台机器有许多cron作业,我建议您避免在第0分钟或第30分钟启动cron作业,因为预期会过载。实际上,大多数人都没有听说还有多少分钟

使用cron如何在fedora 12中使用cronjobs恐怕没有简单的方法来做一些自己的研究,包括阅读一些优秀的手册。这是不对的。具有此类规范*0-24***的cron作业将每分钟运行一次,而不是每小时运行一次。
3 * * * * absolute_path/your_program_name  optional_parameters  optional_redirections