可不可以把 shell 脚本替换为 Python 脚本?

101 天前
 Canglin
目前公司生产上大概有 1000+的 shell 脚本,最近总能刷到 Python 替换 shell 的言论,不知道可不可行,目前我也不清楚 Python 照 Shell 来说有什么优势,之前做过一个临时工单,抽取 3000+文本文件中的特定条件的字符串到指定文件中,Shell 执行了 14 小时左右 Python 执行了大概 20 分钟,不知道可不可以作为参考依据
本人运维
9763 次点击
所在节点    程序员
100 条回复
loading
101 天前
如果你是运维,我建议是用 golang ,没有上面环境等问题。

但还是那句话,能用还是别动。
salmon5
101 天前
建议换成 go ,或者 rust
crackidz
101 天前
可行但没必要
Canglin
101 天前
@salmon5 #22 舍本逐末了
gimp
101 天前
@Canglin #12 学习为什么要用生产环境练手...
noahlias
101 天前
什么 shell 脚本这么抽象要执行 14 个小时
shell 本身不就是调各种命令吗 严重怀疑 shell 脚本写的有问题
codingKingKong
101 天前
可以换, 前提是你能有可靠的测试手段和测试方案.
属于受累不讨好的工作量. 如果确实决定了, 那么请考虑以下三个方面:
1.调研清楚为什么要 A shell 脚本要这么写, 是否有业务限制?
2.从小到大, 从易到繁, 不要上来就去动最麻烦的那个, 不确定的不要动.
3.测试, 保证你修改后不能产生问题和引入新的问题, 其中比较麻烦的点在于边界处理. 例如, 某段 shell 代码隐含的处理逻辑会产生 a 数据结果, 替换为 python 后没有这样的效果, 导致预期行为改变.
剩下的, 就是慢慢的改, 建议每动一批之后, 留一些时间观察, 防止测试不到的事故集中爆发, 让你处理不过来.
祝好.
sakeven
101 天前
如果是大规模机器上使用 python ,python 的环境问题远比 shell 要复杂,要换也是建议换成 go 、rust 之类的。
libook
101 天前
shell 主要用于调用其他指令处理的情况,Python/Perl 等主要用于对数据进行处理的情况,你可以混合使用,甚至必要情况下可以自己写 Go/Rust 程序来处理计算密集型或资源匮乏情况下的任务。
zictos
101 天前
python 肯定可以替代 shell 啊,写起来方便很多很多,不过已经写好的 shell 就暂时没必要换了。
重点体现在实现同样需求的代码量和简洁度,不过如果要优化速度,python 优化起来也会方便很多。执行外部命令用 subprocess 可能稍微麻烦点,代码行数可能多点,除非还是用 os.system 和 os.popen
guanzhangzhang
101 天前
要看实现手段,之前腾讯有个论坛出了个奖金题目,处理一个 nginx 日志里 ip 信息,有用 perl 的,有用 python 的,有用 shell 的,最后第一名用时最短,大佬用了好多 shell 和 linux 黑科技
sleepybear1113
101 天前
这不一个降本增效、提升自己存在感的机会来了嘛?先不动就不动,然后打报告,说要用 Python 优化 xx 个慢 shell ,提高性能 xx%,然后写进 OKR 里面。慢 SQL 改起来费劲,但是这个应该会好很多吧。带上 GPT 写起来更加方便,就是优化的话,可不能把原来的正常的搞崩了。
codersdp1
101 天前
@sleepybear1113 可能一个不小心就是增笑了。
ckloy
101 天前
强烈建议先 review 下 Shell 脚本
Emiya1208
101 天前
有些东西不怎么需要性能,shell 脚本搁在那不出意外能兼容当前 +- 10 年的发行版,python 脚本放在这儿,Python 3.9 写出来的东西不一定能在 Python 3.6 上 run 起来。

我经常在某些特定的环境写 python 运维脚本,写的不怎么优雅,这不是能力问题,因为很多时候我必须被环境缚手缚脚(完全只使用 python 标准库来写脚本)
wu67
101 天前
生产尽量不动. bash 能跑就不 zsh, shell 能用就不 py. 等到负责人受不了了再搞, 炸了也有人一起扛雷
naythefirst01
101 天前
生产环境先稳定再高效 如果不是十分有把握 最好不要自己找锅背
Emiya1208
101 天前
补充一下 即便是 go 或是 rust ,也可能在某些特定的残疾环境上运行出现问题。所以,某些场景下,perl 甚至还有用武之地,虽然这东西我看不懂。
AAAAAAAAAAAAAAAA
101 天前
生产环境怎么统一管理的,可以统一的话可以试,需要先立项,比如能给你领导或者领导的领导写一页 PPT 那种,提高了多少效率之类的,然后从上往下执行。
baobao1270
101 天前
@Canglin 还是看个人感觉吧,比如你这个替换 3000+文本个人认为算复杂的。还有大量文本模板填充之类,配置文件生成,不是简单的 grep / awk 就能处理的日志分析之类的。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1061359

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX