别着急,坐和放宽
进程概念
进程查看命令
ps
ps # 当前终端中的进程,PID为进程的唯一标识
ps -e | more # 所有进程,centos7的1号进程是systemd,而centos6为init
ps -ef | more # UID为进程的有效用户id(不一定是创建者),PPID为父进程的PID
ps -eLf | more # LWP线程
当计算机资源不足时,可以查看是否是进程过多或线程过多导致的。
pstree
# 默认没有安装,需要先安装
yum install -y psmisc
pstree | more
top
top
# up 33min - 上次开机后已经运行时间
# load average: 0.04 0.05 0.06 - 1,5,15分钟平均负载,可以把负载1想象成一个塞满的车道
# Tasks - 运行的进程
# %Cpu(s) - us用户态,sy系统态(进程间状态交互),id空闲态,wa等待磁盘操作。按数字1可以分别看逻辑cpu
# KiB Mem - 内存使用情况
# KiB Swap - swap使用情况
top -p PID
总结:进程也是树形结构;进程和权限有着密不可分的关系
常用命令介绍
free
top
nice
renice
&符号
jobs
使⽤ nohup 与 & 符号配合运⾏⼀个命令
nohup 命令使进程忽略 hangup(挂起)信号,即关掉终端也不会结束进程
守护进程(daemon)和⼀般进程
服务(提供常⻅功能的守护进程)集中管理⼯具
/etc/init.d/
systemctl 常⻅操作
systemctl start | stop | restart | reload | enable | disable 服务名称
软件包安装的服务单元 /usr/lib/systemd/system/
systemctl 的服务配置
位置/usr/lib/systemd/system/
案例:loop脚本开机自动启动
free -m
free -mh
top
top -p PID
# 运行提供的脚本
nice -n 10 ./loop.sh
renice -n 15 PID
# 后台运行提供的脚本
./loop.sh &
jobs
# 切换后台进程到前台
fg [JOB_ID] # JOB_ID为jobs命令查看到的作业id
# 切换前台进程到后台,在内存中挂起
ctrl + z
# 恢复前台执行
jobs
fg [JOB_ID]
# 恢复后台执行
jobs
bg [JOB_ID]
nohup tail -f /var/log/messages &
cd /proc/PID
ls -l CWD
ls -l FD
cd /usr/lib/systemd/system/
vi loopd.service # 通常可以复制sshd.service修改
[Unit]
Description=Loop service
After=network.target
[Service]
Type=simple # Daemon进程使用forking
User=root
WorkingDirectory=/root
ExecStart=/bin/bash /root/loop.sh
ExecStop=/usr/bin/kill -s QUIT $MAINPID
ExecReload=/usr/bin/kill -s HUP $MAINPID
[Install]
WantedBy=multi-user.target
systemctl start loopd
systemctl stop loopd
systemctl enable loopd