昨晚,几位“车神”引爆了世一大学子的朋友圈。

看到边骑车边跑代码的仁兄,

小协目测他是在电脑里用Linux虚拟环境跑程序,

因为合盖后电脑休眠就会自动结束运行,

所以不得不一边打开电脑一边在学堂路骑车。

小协作为一个程序员,不自觉地鼻头一酸,这不就是曾经的我吗?

“爬虫爬,我也爬;程序跑,我也跑。”

那么到底如何优雅地在学堂路上跑代码呢?

合了盖也要跑程序的四样写法,请查收!

00

甩锅给其他人,让别人边骑车边跑程序

void 组长布置任务() {    try {      布置给组员();        } catch (Exception e) {      自己来做();    }}void 布置给组员() {    throw new Error();}

01

购买“提升生活品质”的好物

02

在本地设置电脑合盖不休眠

Windows(以win10为例)

可以在“设置-电脑和睡眠-选择关闭笔记本计算机的功能”中设置合盖不休眠。

Linux(以Ubuntu为例)

可以在终端输入指令开启“合盖不休眠”;

sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target

同样的,也可以输入指令关闭“合盖不休眠”。

sudo systemctl unmask sleep.target suspend.target hibernate.target hybrid-sleep.target

值得一提的是,对于上文中出现的windows中跑ubuntu虚拟机的情况,应该设置windows的合盖不休眠,因为虚拟机本质是跑在windows下的一个进程。

macOS

可以使用软件NoSleep(可以在App Store上找到)等软件实现合盖不休眠。

图片来自NoSleep在App Store中的介绍

03

把程序传到服务器上,在服务器上跑

假设你已经拥有一个Linux系统的远程服务器,如果你希望在该服务器上永不休眠地跑程序,哪怕你已经与服务器断开了连接,你需要两个步骤:连接服务器,退出登录的时候让服务器不要杀死你的程序。连接服务器顾名思义,我们主要通过ssh进行连接;而后者又有好几种方法。第一种是分离会话,另一种则是在后台运行程序,然后让程序在收到会话结束信号的时候继续执行。

这样一来,你只需要连上服务器,然后一通操作,就能合上电脑盖继续跑程序了!值得一提的是,不少朋友认为本地分离会话以后就可以在休眠的情况下继续运行程序,实际上这是不对的。

那么我们具体应该怎么做呢?

通常我们使用Secure Shell(SSH)的方式与远程服务器建立连接。在此介绍一种口令登录SSH的方式,打开你的终端(commander),输入这条命令:

ssh user@hostname

user是你的用户名,hostname是你服务器的地址,它可以是URL(kexieniubi.kexie.com),也可以是IP(192.168.1.77)。

如果你需要和其他用户用同一个用户名登录到服务器的不同端口,例如你要用name用户名登录host.com的77端口,那么你只需要这么写:

ssh -p 77 name@host.com

接下来,根据提示即可输入密码完成登录。如果你是第一次登陆该服务器,在确认服务器的安全验证后(限于篇幅,本文不介绍ssh如何进行安全验证的,有兴趣的读者可以自行搜索),遇到这句话的时候打“yes”。

Are you sure you want to continue connecting(yes/no)?

接下来的操作,就需要在已登录的服务器上完成了。这里有五种方法供你选择,但每一种方法都使用了不同的库,在使用之前,记得搜索一下Linux安装对应的库。(本文仅介绍这些工具的基本使用方法,对于更具体的细节,可以点击“阅读原文”)。

方法1 screen

screen是一种Linux下的窗口管理器。用户可以通过screen同时处理多个终端的对话,运行对话或在对话之间切换,无需担心掉线、登出等问题。

使用命令screen开启一个新的会话:

screen

然后你就能在这个会话中快乐地跑程序了。但是如果这个时候直接logout的话,这个会话仍然会被杀掉,因此需要先将这个会话解绑,方法是按下Ctrl+a之后再按d。然后这个程序就会在后台运行了!

当然,我们有的时候需要将之前的会话恢复,这个时候就可以调用

screen -r # 恢复上一个会话screen -r # 恢复指定会话

方法2 tmux

tmux 是一种可以用来替代screen但是比screen能力更强的插件。在使用逻辑上和screen很像:通过tmux指令开启一个会话,按下Ctrl+b然后d解绑,使用tmux attach恢复会话。

此外,用tmux,你还可以给创建的session取名字:

tmux new -s 

然后就能在恢复的时候用名字来指定:

tmux a -t 

并且你能用

tmux ls

查看当前的所有tmux会话。

方法3 nohup

当ssh会话关闭的时候,会话会向进程发送SIGHUP信号。而nohup则会告诉你的指令忽视这一个信号,因此可以实现登出以后继续跑程序。你只需要输入:

nohup [你的指令] & # &是让其在后台执行

该指令会返回[JOBID] PID。之后可以通过指令

fg %JOBID

查看该程序的运行状态。

方法4 disown

disown的大致原理是将某一个任务从系统任务队列中移除,因此就不会收到会话结束的SIGHUP信号了。(注意:如果要使用disown的话,执行的程序不能有stdin和stdout)。

[你的命令] &jobs -l # 查看任务disown -h %JOBID # 查看任务的时候能找到对应的JOBID

方法5 setsid

指令

setsid [你的指令]

会为你的指令创建一个进程并解绑。之后可以通过指令:

ps -ef | grep [你之前输入的指令]

查看该指令是否执行完成。

在多核系统上,程序员常常使用多线程来充分利用资源,然而人和电脑不一样,人只有一个大脑一个心脏。建立在世一大常年堵自行车的基础上,多线程骑车还是其他“路友”的安全威胁。

当事人在某乎上也这样说明道:

小协也要在这里提醒大家,道路千万条,安全第一条,在校园骑⻋一定要注意安全,对自己负责也是对他人负责。

当然,如果以上几种方法还不能让你放心大胆地把电脑合上跑代码,那小协负责。

扫码关注,进入这片酒井人的新乐园?

文案 | 潘紫琪 程紫菲 张书宁 吴明恒 夏奇

排版 | 夏 奇

技术审核 | 曾奥涵

审核 | 夏 奇

vasp如何杀掉任务_如何优雅地在学堂路上骑着车跑代码相关推荐

  1. mot数据集_【多目标跟踪】搞不懂MOT数据集,会跑代码有啥用!

    基本数据集介绍 MOT 数据集 数据集用的最多的是 MOTChallenge,专注于行人追踪的.https://motchallenge.net/15 年的都是采集的老的数据集的视频做的修正.参考论文 ...

  2. java在线支付---09,10,11,12_在线支付_分析易宝支付网关的应答协议与处理代码,完成用于处理支付响应的Servlet的初步编写和调试,完成处理支付网关响应结果的Servlet,支付实现

    09_在线支付_分析易宝支付网关的应答协议与处理代码 创梦综合技术qq交流群:CreDream:251572072 对支付结果返回的数据加密生成md5-hmac public static boole ...

  3. lisp工具箱for中望_CAD二次开发LISP视频_小懒人CAD工具箱_CAD插件_CASS插件_LISP代码...

    CAD二次开发LISP视频_小懒人CAD工具箱_CAD插件_CASS插件_LISP代码 LISP教程,CADLISP开发视频,LISP视频 CAD二次开发视频 CASS开地教程 LISP视频 LISP ...

  4. 【如何简单优雅的来用Docker布置Python环境跑脚本【Linux / 宝塔】】

    如何简单优雅的来用Docker布置Python环境跑脚本[Linux / 宝塔] 如何简单优雅的来用Docker布置Python环境跑脚本[Linux / 宝塔] 建议用宝塔,来安装Docker,贼方 ...

  5. git bash命令_更优雅地使用命令行

    工欲善其事,必先利其器,通过武装自己的命令行工具,从而更优雅地使用命令行,可以使工作更加高效并且有趣.本文将以下几个方面来介绍命令行的使用技巧和提效工具 CLI 一键呼入呼出 iterm2 是一款完全 ...

  6. python如何删除对象属性_如何优雅的删除对象中的指定属性?

    要优雅的话,使用 Lodash 的 omit 方法移除不要的属性: const object = { 'a': 1, 'b': '2', 'c': 3 }; const result = _.omit ...

  7. c++如何把字符串转为变量名_如何优雅地计算多变量

    作者:包寒吴霜 中科院心理所硕士在读(名字/人格/社会/文化心理学) 知乎:https://www.zhihu.com/people/psychbruce 社会科学研究经常会遇到"超多变量& ...

  8. antd select 下拉菜单的 style 属性_如何优雅地彻底解决 antd 全局样式问题

    背景 由于某些原因,我们团队负责在 GitLab 上做二次开发,简单理解就是在 GitLab 上挂个 DOM 渲染用 React 写的一些组件,组件库选择了 antd,尴尬的是引入之后发现,GitLa ...

  9. python怎么打开ipynb文件_如何优雅的打开.ipynb文件

    目前在windows打开.ipynb的文件的方法,网上几乎就只有一种,在cmd下 > jupyter notebook 这个方法只是方便你新建notebook的时候.如果你想再打开它,当你优雅的 ...

  10. 对文本根据特殊字符进行分段代码_如何优雅地配置快应用的代码片段

    本文使用 Zhihu On VSCode 创作并发布 作为一名程序员,在编码的过程中,难免会遇到要写些重复性的代码:假如每次都重新码一遍,既浪费了时间,也有伤身体.倘若可以配置一个像快捷键一样,输入简 ...

最新文章

  1. 【js】通过js代码改变html表单中的数据
  2. [源码]python Scapy Ftp密码嗅探
  3. [转]PetShop的系统架构设计
  4. C语言算小数加减,C语言带小数加减乘除.doc
  5. 网易资深Java架构师:疫情对java行业的影响分析
  6. 国内高速前端 Unpkg CDN 替代方案
  7. k8s踩坑记第2篇--3个IP折磨人的故事
  8. C++调用C#编写的com组件方法
  9. 2022 最新分布式面试题合集,轻松应对 Java 面试
  10. 如何实现一个高速文件下载器
  11. yii2 restful web服务[格式响应]
  12. aecmap快捷键_ArcGIS编辑操作的常用快捷键
  13. 【抖音视频剪辑】台词找影片素材,剪视频必备
  14. qq邮件如何设置html阅读,如何得知对方是否已阅读QQ邮件?
  15. C语言自学完备手册(07)——printf()输出格式详解
  16. Latex输入矩阵的几种方式
  17. unity 如何获取系统时间
  18. CSS3 弹性布局 flex 项目属性
  19. 娱乐小工具微信小程序源码下载支持多种流量主
  20. 索引失效的情况及解决(超详细)

热门文章

  1. 【转】Swig 使用指南
  2. 回溯算法与八皇后问题
  3. 让用VS2013编写的程序在XP中顺利运行
  4. 计算机的二进制,十六进制等的数值概念
  5. C++网络编程实例之多个客户端交互(多线程)
  6. 防火墙双机热备配置实例(二)
  7. MySQL 第二次练习(源码安装、数据库和表的建立)
  8. 技术解读Rainbond ServiceMesh微服务架构_开源PaaS Rainbond
  9. 【C/C++】C/C++中Static的作用详述
  10. 看法:2017会带给我们的文化和方法