这两天有一个新闻,说是有人拍到了清华有一个学生在一手骑车一手托着电脑,好不潇洒。无图无真相,这是我从在清华读博的朋友的朋友圈里找来的图:
后来有好事者把它传到了网上引起了轩然大波,有些不良媒体纷纷报导,上来标题就是:震惊!学生夜晚一边骑车一边敲代码,清华的学生内卷如此严重!这件事还上了知乎热搜,很多大号也是纷纷带节奏,各种指责清华内卷学生压力大。
当然这种调侃也是由来已久,由于是全国首屈一指的名校,清华在各种圈子里都被称为贵校。由于清华的课业压力大,对学生严格要求,被很多人称为内卷学校。我没这个福气上清华这样的学校,对于这样的学校内不内卷也不了解,但就这件事情而言,我可以很肯定地用四个字评价把学生托着电脑骑自行车和内卷联系起来的人:非蠢即坏。
因为摆明了骑自行车的时候是不可能敲电脑的,不信你可以试试。我试过,我以前骑自行车上学的时候经常放双手,还试过放双手拐弯,都没摔。直到有一次心血来潮想试试闭着眼睛骑车,没几秒钟就磕在马路牙子上了。所以这位大神肯定不是在敲代码,也不是在使用电脑,仅仅是托着电脑而已。
事件分析
那么这位大神为什么要一边骑车一边托着电脑呢?
其实我们不难从他的电脑屏幕上找到答案,我们放大一下图片可以看到两个非常熟悉的东西。我们可以看到一个窗口,这个窗口的背景颜色是Ubuntu系统的桌面。如果是装了Ubuntu是不会有一个窗口的,所以可以推测他应该是使用的虚拟机。然后我们在虚拟机里看到了一个黑色的窗口,这个窗口是terminal,也就是终端。
到这里基本上也就破案了,这位同学十有八九是在虚拟机当中跑了一个比较耗时的程序。已经跑了一半了,还没有出结果。如果电脑合上会陷入休眠,那么他前面的工作也就白费了。在知乎上有一个号称是本尊的匿名用户也认可了这种说法,这能说是内卷吗,是导师压迫吗,只是一个珍惜自己辛勤劳动的工程师的正常举动罢了。
看起来这件事情荒诞不羁,也颇有话题。但是反过来想这根本不算个事,你想想看,能上清华的学生是不是特别优秀,是不是特别努力?利用好通勤时间来工作学习这有毛病吗?一点毛病都没有,很多勤奋努力的人都是这么干的。不说清华的学生了,就说立志考研的考研党,十个有八个都是这么拼的。只不过边骑车边干活不太可能而已。
说真的,我每次逛知乎看到内卷这两个字就像是眼睛被针扎了一样,别人的一点努力就是内卷,有一点竞争就是内卷,是不是只有躺平了任凭生活爆锤才是真谛?冷静下来想想呢又挺敬佩这帮人的。这帮人为了给自己的废柴找借口也是够拼的,什么借口都能找。
还有一个很可笑的就是所谓资本的力量,前段时间有公众号带外卖小哥的节奏,说什么外卖小哥很辛苦,算法不是人(本来就不是人)拼命地压榨。我当时看了也快笑死了,外卖小哥辛苦不假,每天工作强度很大也不假,算法限定的时间很紧更不假。但扯淡的是这些和资本压榨其实并没有太大的关系,因为城市里愿意送外卖的人就那么多,点外卖的人越来越多,那么外卖小哥自然压力越来越大。更关键的是,两家外卖公司现在是赔本赚吆喝,都是亏钱在补贴市场。一个倒贴钱的公司被打上黑心资本家的标签,真的是黑色幽默了。
我们来设想一个问题,如果有朝一日我们成了创业者,尽我们所能想要服务好市场,与此同时想要获得一点正当的收入。因为一些地方没有做到位或者是没做到完美,结果被舆论随意碾压,打上了各种标签,我们会是怎样的感受?换位思考一下,很多事情非常扯淡。
说了这么多,其实就是想说一点,当今互联网时代舆论的口径在放松,大家都有权发表自己的意见。这是好事也是坏事,好事是我们平民迎来了获得话语权的机会,草莽也能上舞台。但坏处也很明显,时无英雄、竖子成名,很多KOI意见领袖本身其实没什么水平,这样的人掌握话语权其实很危险,对社会和国家都不好。身处这样的时代当中,我们要有自己的主见和自己的想法,不要人云亦云,被不安好心的人带了节奏。
技术探讨
我们最后回到问题开始的地方,来思考一个问题,假如我们也有这样一个要跑很久的任务应该怎么办呢?
比如那些比较庞大的深度学习任务,一跑几个小时甚至几天都是很正常的。比较好的办法就是把任务放到服务器上,然后我们在服务器运行程序。但是这样有一个缺点,就是我们连接服务器往往是通过ssh命令进行远程连接的。这样当我们合上电脑的盖子或者是断网之后连接就会自动断了,失去连接之后正在运行的程序也会随之中断。
针对这个问题有很多种解决方案,比如nohup运行,比如screen,比如tmux等等。我个人使用screen比较多,就来介绍一下screen的用法,这样我们只需要搞一个服务器就可以不必面临这位同学的窘境了。毕竟本地的资源也有限,往往不如服务器或者是集群效率高。当然你要是并联了几个N卡当我没说。
这些工具的原理都是一样的,就是在服务器内部开启一个虚拟窗口,然后在这个窗口当中运行。这样即使我们的连接断开了,这个窗口还在,代码依然能跑不至于我们连接断了运行的程序也中断。其中nohup是将命令行放在后台运行,用起来比较费劲,我个人也不太喜欢,mtux和screen差不多,各有千秋。
screen是一个命令行工具,一般来说Linux系统自带,如果没有的话也不麻烦,使用apt-get或者是yum的命令安装一下即可。安装好了之后,我们通过screen -S来新建一个窗口。
代码语言:javascript复制screen -S test
这样我们就得到了一个叫做test的screen,这个screen会一直存在,直到我们人为将它关闭或者是机器重启。我们敲下回车之后整个终端会被刷新,看起来好像是之前的日志没了,其实是已经进入到了一个新的窗口。
我们可以用ctrl a d(按住ctrl先按a再按d)来退出当前screen回到终端,可以看到之前的窗口又回来了。想要知道我们之前一共启动了多少screen,我们可以用screen -ls 来查看。
我们关注一下最后一行的括号里,有一个叫做Detached的单词,表示这个窗口当前没有被占用。我们想要回到这个screen当中,可以通过screen -r 的命令。我们的这个screen叫做test,所以命令就是screen -r test。如果显示的是attached,表示的就是已经被占用了。也就是说有其他的终端打开了这个screen,也有可能是之前还没退出网络就断了,还没刷新。这个时候我们是没有办法直接进入的,会提示我们已经被占用了。这个时候我们需要先用-d命令来强行断开这个screen和其他窗口的连接,让它恢复到Detached的状态。
代码语言:javascript复制screen -d test
有一点需要注意,在screen当中是没有办法直接使用鼠标滚轮,也是没办法直接复制里面的log日志的。如果我们想要向上翻滚日志,需要使用组合键ctrl a [(按住ctrl,先按a再按[ )进入编辑模式,这样就可以使用滚轮了。
想要删除一个screen可以直接通过命令,也可以先进入到screen当中再按ctrl d来关闭。注意ctrl c不会关闭screen,只会中断正在执行的代码。并且我们还可以开启多个screen做不同的任务,这样我们就不需要开启多个窗口也可以执行多任务了。
screen常用的用法就是这些,有了screen之后,我们就可以愉快地在远程跑一些大型任务不用担心网络不稳定或者是到了下班的点实验没做完了。
同学,你学会了吗?如果还喜欢今天的内容的话,请来一个三连支持吧~(点赞、在看、转发)
- END -