Linux 用户、进程与终端管理

新建用户

1
2
3
4
5
6
7
8
9
10
11
root 权限下:
useradd test
passwd test

userdel -r test # 连同文件夹一起删掉



addgrop friends
usermod -l
addgrop -g/G

例行工作

1
2
at
cron

程序管理

程序一般放在磁盘中,通过用户的执行来触发,触发后会加载到内存中成为一个个体,就是进程。

作业控制:

1
2
3
4
5
&              # 放到后台运行(关掉终端会停止)
fg %1 # 把 job 1 拿到前台
bg # 让后台暂停的任务继续跑
kill -9 %1 # 杀掉 job 1
ctrl + z # 挂起当前任务,比如 vi 下按它可以把 vi 丢到后台

查看进程与系统状态:

1
2
3
4
5
top -d 5 -p 12345
free -g
uname -a
uptime
netstat -a

让命令在关掉终端后继续跑

上面的 & 只是放到后台,终端一关任务还是会停。要让它活下来有两类做法。

命令还没启动时,用 setsidnohup 脱离当前会话,或者干脆开一个 screen/tmux 会话:

1
2
3
4
setsid bash test.sh
nohup test.sh &
screen
tmux # tmux ls 列出会话,tmux a -t 1 接回去

命令已经在跑了,先 ctrl + z 挂起再 bg 丢到后台,然后靠 huponexit 这个开关让它在退出时不被挂断:

1
2
3
4
5
ctrl + z                  # 暂停任务
bg # 放入后台运行

shopt | grep hup # 默认 off;shopt -s huponexit 会让 exit 时一并关掉任务
exit # off 的情况下 exit 能让命令继续在后台跑

最后这条只对 exit 有效,直接关掉终端窗口不行——那样发的是 SIGKILL,进程收不到也挡不住。

想让远程连接自动进 tmux,写进 ~/.bashrc

1
2
3
4
if [[ -z "$TMUX" ]] && [ "$SSH_CONNECTION" != "" ]; then
tmux attach-session -t ssh_tmux || tmux new-session -s ssh_tmux
exit
fi

SELinux

Security Enhanced Linux

screen

1
2
3
4
screen -dmS test   # 创建 test 窗口
screen -r test # 连接 test 窗口
screen -d test 后 screen -r test # 如果连接不上,这样连接
screen -S test -X quit # 删除 test 窗口

rsync 同步

rsync -arv ./ back/

rsync -arv ./ root@<PUBLIC_IP>:/root/back/

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Ctrl + r:可以快速查找历史命令;

Ctrl + l:可以清理控制台屏幕;

Ctrl + a \ Ctrl + e:移动光标到命令行首\行尾;

Ctrl + w \ Ctrl + k:删除光标之前\之后的内容。

VIM文件编辑快捷键

快捷键ZZ:文件保存并退出。

进程操作快捷键

Ctrl + c:强制终止程序的执行;

Ctrl + z:挂起一个进程;

Ctrl + d:终端中输入 exit 后回车。

linux命令中快捷键(top)

Shift + p:根据 CPU 使用率排序;

Shift + m:根据内存占用排序。