搜索
命令 | 作用 |
---|---|
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 系统是这样设计的:
- 用户准备退出 session
- 系统向该 session 发出 SIGHUP 信号
- session 将 SIGHUP 信号发给所有子进程
- 子进程收到 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