Skip to content

搜索

命令作用
find .xargs ¦ grep -ri "strname"搜索当前目录所有文件是否包含某个字符串
netstat -tlnp查看端口
ln -s a/b /usr/local/bin添加 b 命令到环境变量
sudo passwd [ username ]修改 root 和普通用户密码

环境变量详解

Vim

  • 强制保存
:w !sudo tee %

Linux 守护进程(daemon【node 可用 PM2 框架】参考 1 参考 2 阮一峰

由来: 启动一个基于 node 的简单 http 服务器

  • 脚本代码
//server.js
var http = require('http');
http.createServer(function(req, res) {
 res.writeHead(200, {'Content-Type': 'text/plain'});
 res.end('Hello World');
}).listen(5000);

前台任务(foreground job)与后台任务(background job)

  • 执行以下命令启动脚本
node server.js

这样启动的脚本为 “前台任务”,独占命令窗口,运行完成或手动停止,才能执行其他命令。

node server.js &

这样启动的进程就会成为"后台任务"。如果要让正在运行的"前台任务"变为"后台任务",可以先按 ctrl + z,然后执行 bg 命令(让最近一个暂停的"后台任务"继续执行)。

后台任务特点

  • 继承当前 session (对话)的标准输出(stdout)和标准错误(stderr)。因此,后台任务的所有输出依然会同步地在命令行下显示。
  • 不再继承当前 session 的标准输入(stdin)。你无法向这个任务输入指令了。如果它试图读取标准输入,就会暂停执行(halt)。

SIGHUP 信号

变为"后台任务"后,一个进程是否就成为了守护进程呢?或者说,用户退出 session 以后,"后台任务"是否还会继续执行? Linux 系统是这样设计的:

  1. 用户准备退出 session
  2. 系统向该 session 发出 SIGHUP 信号
  3. session 将 SIGHUP 信号发给所有子进程
  4. 子进程收到 SIGHUP 信号后,自动退出

这就解释了为什么"前台任务"会随着 session 的退出而退出:因为它收到了 SIGHUP 信号。那么,"后台任务"是否也会收到 SIGHUP 信号? 这由 Shell 的 huponexit 参数决定的。

shopt | grep huponexit//查看huponexit参数的值。

大多数 Linux 系统,这个参数默认关闭(off)。因此,session 退出的时候,不会把 SIGHUP 信号发给"后台任务"。所以,一般来说,"后台任务"不会随着 session 一起退出。

disown 命令

通过"后台任务"启动"守护进程"并不保险,因为有的系统的 huponexit 参数可能是打开的(on)。 更保险的方法是使用 disown 命令。它可以将指定任务从"后台任务"列表(jobs 命令的返回结果)之中移除。一个"后台任务"只要不在这个列表之中,session 就肯定不会向它发出 SIGHUP 信号。

node server.js &
disown //移出最近一个正在执行的后台任务 [-r|-a|-h][自行查阅]

FTP

参考https://blog.csdn.net/hitabc141592/article/details/7573950

后台运行 守护 screen

shell
#开启一个任务
screen -S 【taskName】·
# Ctrl+A Ctrl+D  保存退出
#查看所有任务
screen -ls
#重新连接某个任务
screen -r 【taskName】
#删除一个任务
screen -S 【taskName】 -X quit