![]() 算法工程师居然要会Linux? 之前其实我也提到过算法工程师,除了算法,必须还有工程,你的模型要给用户用,要在线上跑,那必须要打包发布,放在服务器上,而现在大多服务器用的都是Linux系统,暂且不说是否需要深入了解Linux内部的内容,就是简单常用的命令,终究是需要了解的,与Windows相对应的,查看文件、新建文件夹、打开文件夹、删除文件等,你都是要知道的,近期进行了一轮简单的复习,另外最近校招季,很多求之说明都要求“会linux”,其实我下面要谈的内容,如果你都掌握,那其实就能称为“会简单的linux”了。 当然的,这里不包括所有,只是部分,也是最常用的部分,按照28法则,20%的内容其实已经能够覆盖80%的场景了,剩下的,其实可以自行查阅,甚至可以开始自己编写一些shell脚本(可以理解为批量的linux命令执行)。
想要练习却苦于没有资源的,两个方案,mac的最简单了,直接内置了相似的terminal,而windows则可以安装虚拟机配置ubantu(linux的一个版本),同样在terminal中操作。 当然哈,不会的同学看一遍估计也记不了,且里面很多细节我都没有(文档之类的我觉得搬运过来真的没有太大意义额鹅鹅鹅,大家相信我就多去查查文档,会更好更详细),建议大家多尝试,加上上面的命令大全多尝试,这样才能真正熟练。 另外推荐两个有关linux的材料,我自己本身也在看的:
文件和目录管理文件和目录管理是操作系统里最基本的技能,对windows、macOS、linux都是,大概就是查看文件、增加删除文件之类的操作。 lsls 用于查看核定目录下的内容(未指定则是当前目录,当前目录是指你现在所能看到的那个目录,路径可以用 pwd 查看),但这个只能是简单看有什么文件和文件夹,非常简单:
如果要看更多的详情,可以尝试用同样常用的 ls-lah
这里的 -lah 实际上是一个配置项,你还要展示什么内容可以配置,具体还有很多配置项可以自己去尝试。cdcd 非常简单,就是转换当前目录,首先当然可以配置绝对路径,也可以用相对路径, cd../ 就是到上一层目录, cd../hello 就是到上一层文件夹下的一个hello的文件夹中,此处注意,如果你写的路径不存在或者你最后用的是一个文件夹,那会报错。mkdirmkdir 新建文件夹,空格以后跟文件夹名。pwdpwd 刚才有提到过,获取当前绝对路径。rmrm 是指remove,删除,可以用 rm-r 删除文件夹,并且递归删除,删除操作一律谨慎使用。mvmv 是指move,移动,可以理解为windows的剪切粘贴,后面有两个必要参数(当然两个必要参数前还需要有一个可选参数,例如 -i 和 -f ),一个是你要移动的文件,另一个是移动到的新的位置(如果是文件夹那就会放文件夹里面)。findfind 顾名思义就是查找的意思,专业说法是指定目录找文件。具体公式是这样的(没有吧备选项放出):
path是你要查找的路径,-option是选项,例如 -name 就是根据名称来找。touchtouch 用的稍微少,用于修改文件或者目录的时间属性,包括存取时间和修改时间。文件查看与编辑看文件名肯定不够的,肯定是要对文件进行修改。 wc计算文档字数之类的值。
head和tail查看文件的前若干行或者后若干行(没有配置的话会有默认行数),可以用作数据探索。 cat和tac这两个命令都是遍历一个文件的内容,打印在linux界面, cat 是正向遍历,后者是反向遍历。nlnl 和cat类似的遍历,但是会给打印的内容加上行号。more和lessmore 和 less 都是和cat遍历类似的遍历命令,但是区别在于 more 可以按照页展示,空格下一页,另外还有检索功能;less 会比more更为强大,也有搜索等功能,特别之处在于对上翻页和前向搜索更方便。grepgrep 是遍历文件中带有特定字段的内容,例如我要找带有“深圳”的数据,这可以帮我们过滤信息,我在读取日志的时候很喜欢用,日志的内容非常繁杂,我根据日志中打的标签,可以快速选择我需要关注的日志信息。sed平时用的不是很多,但是用起来非常强大,可以依照脚本指令编辑一个、多个文件。来举个栗子,具体用法可以在文档里面查吧。
表示在名为 testfile 的第四行后添加一行,内容是newline。awk功能很多很复杂,但是感觉贼强。举个例子说明一下,具体的使用还是建议大家自己过一遍。 下面是一个叫做 log.txt 文档的内容
下面这个命令就表示提取这个文档里面第一列和第四列的内容(空格划分)。
是不是觉得有点像sql的感觉?反正就觉得很厉害哈哈哈。 stat查看文件的一些细节情况,大小、创建时间、权限之类的。 系统管理top和ps都是查看所有进程的状态,包括其占用情况。但是 top 是实时的监控,打开界面的, ps 则是一个瞬时的,例如我就是看看我的程序pid,然后用来kill掉的。vmstat用于查看虚拟内存状态。这个命令我发现在有的系统里是失效的。 free显示内存占用状态。这个命令我发现在有的系统里是失效的。 chown和chmodchown 是用户与用户组设置, chmod 是设置读、写、运行的权限。(作为小弟的我似乎没有什么机会用到,自己平时操作就不需要分配,团队里我是末尾也是用不到哈哈哈,等用得到的那天再说)nohup在命令之前带这个玩意,能让命令在后台一直运行(类似windows的最小化)。 disown令已经在运行的进程,不再受到用户退出限制。 远程连接有关远程连接,我觉得这个是linux很强大的技能,在windows下,其实没有很好的连接,除非你有QQ微信网盘之类的,但是linux之间的远程连接方法其实还不少。 ssh这是一种制定的建立在应用层基础上的安全网络协议,甚至可以和windows产生联系,所以就很厉害吧。坑有点深,具体方法。有点复杂,给一个链接大家自行体会一下:https://blog.csdn.net/li528405176/article/details/82810342,记住他是用户直接连接两个终端的。 scp和rsync两个同步两个终端文件的操作,说人话就是传文件。首先说两者的区别,引用博客的一段话其实很清楚:
从本地到远程,有下面4种形式:
从远程到本地,2中:
其他首先是标准输入和标准输出。 另外还有几个很重要的且不能不提的东西,放在这里。大家根据我给的一些资源整理阅读学习。 首先是标准输入和标准输出:
还有一个需要提到的是管道。
vim是linux下最具代表性的文档编辑器。这个需要记住的细节非常多,尝试自己用这个玩意做一段时间开发,自然会熟悉。
git是代码管理的基本命令,有个非常傻瓜的教程,大家可以看看:
crontab是一个linux的定时任务工具,给定时间,他会定时去执行任务,具体的使用可以参照这个:
补充上面内容只是很简单的一块吧,有了上面的内容,你就可以进行简单的linux操作了,但是还会有很长的一条路要走,例如写shell脚本(例如条件、循环语句、变量之类的)、和多语言协同合作(例如大家熟悉的python等),这个就需要多实践和练习。 ![]() ---------------------------------------------------------------------------------------------------------------------- 我们尊重原创,也注重分享,文章来源于微信公众号:SAMshare,建议关注公众号查看原文。如若侵权请联系qter@qter.org。 ---------------------------------------------------------------------------------------------------------------------- |