`
superlxw1234
  • 浏览: 550775 次
  • 性别: Icon_minigender_1
  • 来自: 西安
博客专栏
Bd1c0a0c-379a-31a8-a3b1-e6401e2f1523
Hive入门
浏览量:44355
社区版块
存档分类
最新评论

perl的多线程脚本示例

    博客分类:
  • perl
阅读更多
#!/usr/bin/perl -w

use strict;
use Data::Dumper;
use POSIX;
use Getopt::Long;
use threads ('exit' => 'threads_only');
use List::Util 'shuffle';
use Thread::Semaphore;
use threads::shared;
use File::Basename;

##设置并行线程数
my $semaphore_cnt = Thread::Semaphore->new(100);

my @hosts = ();

open (HOSTFILE,"</home/hdfs/lxw/mapred.hosts") or die "failed to open hostfiles to read\n";
while (<HOSTFILE>) {
	chomp;
	push @hosts,$_;
}
close HOSTFILE;


foreach my $host (@hosts) {
		$semaphore_cnt->down();
		my $t = threads->create(\&deleteFiles,$host);
		foreach my $thr (threads->list(threads::joinable)){
			$thr->join();
		}
}


foreach my $thr (threads->list()){
    $thr->join();
}

sub deleteFiles() {
	my $host = $_[0];
	my $command = qq(source /etc/profile
		source /etc/bashrc
		ssh $host -p 58422 -t 'sudo nohup sh /tmp/del.sh'
);
	my $start_time = &getNowTime();
	my $result = system($command);
	my $end_time = &getNowTime();
	if ("$result" eq "0") {
		&wirteLog($host . "  start:" . $start_time . " end:" . $end_time . "\n");
		$semaphore_cnt->up();
	} else {##failed
		$semaphore_cnt->up();	
	}
}


sub getNowTime {
    my ($sec,$min,$hour,$day,$mon,$year) = (localtime(time))[0,1,2,3,4,5];
    sprintf "%4d-%02d-%02d %02d:%02d:%02d",$year+1900,$mon+1,$day,$hour,$min,$sec;
}

sub wirteLog {
	my ($msg) = @_;
	my $logFile = "/tmp/delete_tobedeleted.log";
	open LOGFILE,">>$logFile" or die "failed to open $logFile to write\n";
	print LOGFILE $msg;
	close LOGFILE;
}
 
0
5
分享到:
评论

相关推荐

    如何使用Perl脚本实现下载服务器端数据到客户端

    - **性能优化**:对于大量数据传输,考虑使用多线程或多进程技术来并行处理,提高整体下载速度。 - **自动化调度**:可以利用cron或类似的任务调度工具,定期执行Perl脚本,实现无人值守的数据同步。 综上所述,...

    perl-toolkit:Perl示例脚本

    7. **Multicore**:Perl支持多线程编程,允许在多核处理器上并发执行任务。Perl的threads模块可以用来创建和管理线程,提高程序效率。 8. **Win32API**:在Windows平台上,Perl可以调用Win32 API来执行操作系统级别...

    Shell中实现“多线程”执行脚本文件完美解决方案

    在Shell脚本中实现“多线程”执行脚本文件是一项常见的需求,特别是在处理大量并发任务时。在传统的Shell环境中,如Bash或Csh,我们通常会利用"&"符号将命令放入后台执行,但这种方法无法很好地控制多线程执行,因为...

    ActivePerl-5.6.1.626-MSWin32-x86-multi-thread.zip

    标题中的"ActivePerl-5.6.1.626-MSWin32-x86-multi-thread.zip"表示这是一个专为32位Windows系统设计的多线程版本的ActivePerl,具体版本号为5.6.1.626。 在描述中提到"这个版本很好用,现在官方网络上找不到了",这...

    Genomic Perl example

    7. **并行计算**:处理大规模基因组数据时,Perl可以利用多线程或分布式计算框架(如Parallel::ForkManager)来加速计算过程。 8. **网络接口**:Perl的LWP模块可以用来访问Web服务,例如从Ensembl、NCBI或其他生物...

    perl网络编程基础篇

    - **多线程(threads)**:Perl支持多线程编程,可以处理多个网络连接并发请求。 - **异步I/O(IO::Async)**:提供非阻塞I/O机制,实现高效的并发网络编程。 7. **安全和错误处理**: - **SSL/TLS**:Perl可以...

    Network Programming With Perl

    10. **并发与异步编程**:Perl支持线程和异步I/O,如`threads`和`IO::Async`模块,可以实现并行处理多个网络连接,提高程序效率。 11. **网络调试与日志**:书中会介绍如何在Perl程序中添加日志功能,以及使用`...

    Perl 6 技术参考手册.docx

    - **多线程编程**:Perl 提供了多线程支持,使得并发处理更为便捷。 - **跨平台兼容性**:Perl 具有优秀的跨平台兼容性,可以在多种操作系统上运行,包括但不限于 Unix-like 和 Windows。 #### 四、Perl 6 的新特性...

    perl5.8.8.8

    在压缩包的文件列表中,"perl5"可能包含了Perl 5.8.8的源代码和其他相关文件,例如编译脚本、文档、示例代码等。这些资源可以帮助开发者深入了解Perl 5.8.8的内部工作原理,进行自定义编译或调试。 总之,Perl ...

    跨平台Perl开发指南(第二版)

    10. **并发和并行处理**:Perl支持线程和并发编程,这对于处理大量数据或执行多任务的应用程序来说至关重要。 11. **perlport和perlsys**:介绍Perl的平台差异和如何编写可移植的代码,确保程序能在多种操作系统上...

    mod_perl docs

    1. **mod_perl 1.x 和 mod_perl 2.x**: mod_perl 1.x主要面向Apache 1.x,而mod_perl 2.x则为Apache 2.x设计,后者引入了更多的改进和扩展,如支持Perl5.8及以上版本,更好的线程安全性和模块化结构。 2. **...

    perl入门教程.pdf

    ** Perl继续发展,新版本引入了现代编程特性,如多线程和面向对象编程。 - **Perl擅长什么?** Perl特别擅长文本处理、数据处理、网络编程和系统管理。 - **Perl不擅长什么?** 对于复杂的数学计算和图形界面设计,...

    基于C语言编写的,多线程小型web服务器,实现简单的主页回显和web CGI(三个函数).zip

    通常,一个小型Web服务器项目可能包含以下文件:服务器主程序(如server.c)、CGI脚本示例、配置文件、日志文件等。my_resource可能是一个包含这些资源的目录,或者是一个特殊的资源文件。 总结来说,这个项目提供...

    Teach Yourself Perl 5 in 21 days

    - **第17天:多线程与并发** - 多线程编程的概念。 - 使用Perl实现并发处理。 - 示例:并行文件处理。 - **第18天:测试与调试** - 单元测试框架的选择。 - 编写测试用例。 - 调试技巧与工具介绍。 - **第19天...

    网络编程基础篇系列-perl

    9. **并发编程**:为了提高网络应用的效率,可以使用Perl的多线程或异步I/O模型,如`threads`模块和`AnyEvent`库,实现并发处理多个网络连接。 通过学习和实践这个“网络编程基础篇系列-perl”,你将掌握Perl在网络...

    windous下perl-gui编程模块 Win32-GUI-1.06-PPM-5.8

    `Win32-GUI`模块还支持复杂的控件交互、多线程处理、自定义控件以及与其他Windows API的集成,这使得Perl在Windows GUI开发中具备了相当的灵活性和可扩展性。如果你需要在Windows环境中用Perl编写桌面应用程序,`Win...

    MTK系统编译架构,让你理解MTK系统编译脚本结构

    在压缩包"MTK系统编译架构"中,可能包含了详细的文档、示例脚本或者工具,这些都是深入了解和学习MTK系统编译架构的重要资源。对于初学者,可以先从阅读文档和理解基本的构建流程开始,然后逐步深入到具体的脚本和...

    一个简单的CGI脚本——Web编程_v1.1归纳.pdf

    现代Web开发中,更常见的解决方案是使用像PHP、ASP.NET或Node.js这样的服务器端脚本语言,它们通常提供更高效的处理方式和内置的多线程支持。 总的来说,CGI是Web开发的早期技术,虽然有其局限性,但在特定场景下,...

    轻松学用Perl(第三版)

    Perl是一种功能强大的脚本语言,尤其在文本处理、系统管理、网络编程等领域有着广泛的应用。在本书中,读者可以系统地学习到Perl的基础语法、数据类型、控制结构、函数以及模块的使用。 首先,Perl的基础语法是学习...

Global site tag (gtag.js) - Google Analytics