免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1635 | 回复: 7
打印 上一主题 下一主题

[系统管理] 你见过的最牛逼的命令行程序是什么?(转) [复制链接]

论坛徽章:
17
CU大牛徽章
日期:2013-03-13 15:32:352017金鸡报晓
日期:2017-02-08 10:33:21fulanqi
日期:2016-06-17 17:54:25lufei
日期:2016-06-17 17:38:40平安夜徽章
日期:2015-12-26 00:06:30冥斗士
日期:2015-11-25 14:38:112015年辞旧岁徽章
日期:2015-03-03 16:54:15亥猪
日期:2015-01-26 17:23:43CU大牛徽章
日期:2013-04-17 11:02:58CU大牛徽章
日期:2013-04-17 11:02:36CU大牛徽章
日期:2013-04-17 11:02:15CU大牛徽章
日期:2013-04-17 11:01:45
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-04-08 15:38 |只看该作者 |倒序浏览
本帖最后由 guyeh 于 2015-04-08 15:39 编辑


===============我是严肃的分割线==================
如果从生产力的角度来说,我觉得xargs是见过的最牛逼的命令行工具。 举个栗子。比如要把该文件夹下的所有jpg文件转成png格式,普通青年可以用for循环 (代码未测试)
for fn in *.jpg; do convert "$fn" `echo $fn | sed 's/jpg$/png/'`; done
文艺青年会用xargs来写,类似 (代码未测试):
ls *.jpg | xargs -I{} convert "{}" `echo {} | sed 's/jpg$/png/'`
好像没什么区别?
现在你的电脑有8个核,想要同时转换格式。咋整?for或者一般的shell就傻逼了,难道要用python/multiprocessing甚至开C++/OpenMP写段小程序?no no no no no(印度口音)。xargs有个逆天的参数-P:
ls *.jpg | xargs -I{} -P 8 convert "{}" `echo {} | sed 's/jpg$/png/'`
执行的效果是,电脑会自动读前8个文件进来,转换格式。这8个进程里任何一个执行结束后,会自动读取下一个文件,保证始终有8个进程在执行,直到所有任务执行完毕。作为一个科研狗,这简直是各种并行处理的大杀器。
===============放福利的分割线==================
如果有多台机器怎么办呢?xargs可以在多台机器上自动并行吗?
坏消息是不行,好消息是,穿个马甲就好啦。把xargs改成parallel (GNU Parallel - GNU Project)即可。
ls *.jpg | parallel -I{} -S 32/m{1..4} convert "{}" `echo {} | sed 's/jpg$/png/'`
这个的意思是在名字是m1, m2, m3和m4的4台机器上并行处理,每个机器跑32个进程。这样parallel就会自动监视每个机器的运行情况,谁家CPU负载低了就自动分配给它其他任务,保证吞吐量。(当然parallel还没有智能到自动传输数据的程度,但这个可以用NFS等轻松解决)




http://linux.cn/article-5203-1.html   好牛逼的命令

论坛徽章:
13
技术图书徽章
日期:2014-04-29 14:15:42IT运维版块每日发帖之星
日期:2015-12-12 06:20:00IT运维版块每日发帖之星
日期:2015-08-30 06:20:00IT运维版块每日发帖之星
日期:2015-08-24 06:20:00IT运维版块每日发帖之星
日期:2015-08-02 06:20:002015年亚洲杯之澳大利亚
日期:2015-04-03 15:03:12申猴
日期:2015-03-20 09:00:292015年迎新春徽章
日期:2015-03-04 09:54:452015年辞旧岁徽章
日期:2015-03-03 16:54:15季节之章:冬
日期:2015-01-20 17:08:47双子座
日期:2014-11-21 16:30:31技术图书徽章
日期:2014-07-11 16:29:08
2 [报告]
发表于 2015-04-08 19:41 |只看该作者
微信看到过这个

求职 : Linux运维
论坛徽章:
203
拜羊年徽章
日期:2015-03-03 16:15:432015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:57:092015小元宵徽章
日期:2015-03-06 15:58:182015年亚洲杯之约旦
日期:2015-04-05 20:08:292015年亚洲杯之澳大利亚
日期:2015-04-09 09:25:552015年亚洲杯之约旦
日期:2015-04-10 17:34:102015年亚洲杯之巴勒斯坦
日期:2015-04-10 17:35:342015年亚洲杯之日本
日期:2015-04-16 16:28:552015年亚洲杯纪念徽章
日期:2015-04-27 23:29:17操作系统版块每日发帖之星
日期:2015-06-06 22:20:00操作系统版块每日发帖之星
日期:2015-06-09 22:20:00
3 [报告]
发表于 2015-04-09 10:00 |只看该作者
xargs 的-p  prompt  不是询问吗?
长见识了。。。

论坛徽章:
17
CU大牛徽章
日期:2013-03-13 15:32:352017金鸡报晓
日期:2017-02-08 10:33:21fulanqi
日期:2016-06-17 17:54:25lufei
日期:2016-06-17 17:38:40平安夜徽章
日期:2015-12-26 00:06:30冥斗士
日期:2015-11-25 14:38:112015年辞旧岁徽章
日期:2015-03-03 16:54:15亥猪
日期:2015-01-26 17:23:43CU大牛徽章
日期:2013-04-17 11:02:58CU大牛徽章
日期:2013-04-17 11:02:36CU大牛徽章
日期:2013-04-17 11:02:15CU大牛徽章
日期:2013-04-17 11:01:45
4 [报告]
发表于 2015-04-09 10:45 |只看该作者
lyhabc 发表于 2015-04-09 10:00
xargs 的-p  prompt  不是询问吗?
长见识了。。。




p是大写

求职 : Linux运维
论坛徽章:
203
拜羊年徽章
日期:2015-03-03 16:15:432015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:57:092015小元宵徽章
日期:2015-03-06 15:58:182015年亚洲杯之约旦
日期:2015-04-05 20:08:292015年亚洲杯之澳大利亚
日期:2015-04-09 09:25:552015年亚洲杯之约旦
日期:2015-04-10 17:34:102015年亚洲杯之巴勒斯坦
日期:2015-04-10 17:35:342015年亚洲杯之日本
日期:2015-04-16 16:28:552015年亚洲杯纪念徽章
日期:2015-04-27 23:29:17操作系统版块每日发帖之星
日期:2015-06-06 22:20:00操作系统版块每日发帖之星
日期:2015-06-09 22:20:00
5 [报告]
发表于 2015-04-09 11:30 |只看该作者
@guyeh
百度一下先

求职 : Linux运维
论坛徽章:
203
拜羊年徽章
日期:2015-03-03 16:15:432015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:57:092015小元宵徽章
日期:2015-03-06 15:58:182015年亚洲杯之约旦
日期:2015-04-05 20:08:292015年亚洲杯之澳大利亚
日期:2015-04-09 09:25:552015年亚洲杯之约旦
日期:2015-04-10 17:34:102015年亚洲杯之巴勒斯坦
日期:2015-04-10 17:35:342015年亚洲杯之日本
日期:2015-04-16 16:28:552015年亚洲杯纪念徽章
日期:2015-04-27 23:29:17操作系统版块每日发帖之星
日期:2015-06-06 22:20:00操作系统版块每日发帖之星
日期:2015-06-09 22:20:00
6 [报告]
发表于 2015-04-09 12:26 |只看该作者
man了一下,找到了
--max-procs=max-procs, -P max-procs
              同时 最多 运行 max-procs 个 进程; 默认 是 1. 如果 max-procs  为  0,
              xargs  将 同时 运行 尽可能 多 的 进程. 最好 同时 用 -n 选项; 不然很
              可能 只会 做 一次 exec.

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
7 [报告]
发表于 2015-04-09 17:47 |只看该作者
感谢分享

论坛徽章:
10
2015年亚洲杯之科威特
日期:2015-04-13 13:51:5315-16赛季CBA联赛之山东
日期:2016-01-16 18:35:0815-16赛季CBA联赛之广东
日期:2016-01-04 15:26:23程序设计版块每日发帖之星
日期:2015-11-13 06:20:002015亚冠之阿尔艾因
日期:2015-11-10 12:32:242015亚冠之阿尔沙巴布
日期:2015-05-15 18:26:49羊年新春福章
日期:2015-04-28 16:45:112015年亚洲杯之伊拉克
日期:2015-04-25 20:06:30羊年新春福章
日期:2015-04-13 13:53:2015-16赛季CBA联赛之八一
日期:2016-01-20 18:23:49
8 [报告]
发表于 2015-04-12 11:06 |只看该作者
不错不错不错
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP