进程管理工具

kill


man 7 signal

1) SIGHUP: 无须关闭进程而让其重读配置文件

kill -1 进程编号

2) SIGINT: 中止正在运行的进程;相当于Ctrl+c

9) SIGKILL: 杀死正在运行的进程

再生进程 kill -9 杀不掉

15) SIGTERM:终止正在运行的进程

kill -15/或不写(默认) +进程编号。正常终止进程 

18) SIGCONT:继续运行

19) SIGSTOP:后台休眠


pidof +指令 可以查询该指令活动进程的编号

前后台的切换(fg,bg,Ctrl z)

想要操作在后台运行只需在后面加 &符号(交互式的指令如vim不能有效)

jobs 看后台命令的进程代号数字

fg 1 关掉后台数字1的进程

Ctrl z 将前台进程放到后台休眠

jbos

bg 1 将后台休眠进程放到后台运行

ps aux  查看程序进程编码

kill -18 +进程编号  后台运行

kill -19 +进程编号  后台休眠

kill -9  +进程编号  终止进程

pkill -t pts/2  关闭指定用户的进程(默认是15指令)

另一个终端的进程停止了

pkill -9 -t pts/2  (强制终止)

如果使用9强制指令会发现指定的终端连链接都掉了。,

pkill -u zczx 可以删除指定用户身份运行的进程


-SIGNAL

-u uid: effective user,生效者

-U uid: real user,真正发起运行命令者

-t terminal: 与指定终端相关的进程

-l: 显示进程名

-a: 显示完整格式的进程名

-P pid: 显示父进程为此处指定的进程的进程列表


nohup

nohup ping 127.0.0.1 &  可以使进程继续在后台运行,但是已经不能用jobs查看到进程代码数字,所以调不会去前台,只能用kill关闭

screen;COMMAND

还能用screen 回话功能继续调用进程,这个只要一链接回去自动默认调用回前台


顺序执行:f1.sh;f2.sh;f3.sh

并行执行:(f1.sh&);(f2.sh&);(f3.sh&) 同时开多个子进程同时运行各脚本进程

{ f1.sh& f2.sh& f3.sh& }

用ps aux 查看进程编号

用kill 指令终止


nice

nice -n -10 ping 10.1.0.1 指定进程的nice优先级别(-20到20)

已经在运行的进程默认是0,也可以不停止调优先级别

ps axo pri 查看后台进程权限

renice -n -10 进程编号  

调整优先级别


任务计划

linux任务计划,周期性任务执行

分为一次性和周期性

at 一次性

batch: 系统会自动选择空闲时间运行

cron 周期性


at 一次性

rpm -q at 可以查询at服务是否安装

/var/spool/at 有新建的任务会在这里

/etc/rc.d/atd status 查询服务是否启动


chkconfig --list atd 可以查看服务是否开机启动,看5模式是否启动

 

chkconfig --level 5 atd on

runlevel 启动模式

(5,6模式的时候使用。)

7版本使用:

systemctl status atd 查看服务器是否启动

systemctl start atd 

at -V 查看版本

at 10:12 指定时间

wall at job is starting 广播

touch /root/at.log

echo "at echo"

用Ctrl D 结束(如果按了Ctrl C 就清空了)

如果有echo的标准输出,不会在屏幕上输出,会自动转发成邮件给你


atq 可以查看到有多少个指定任务

at -l 效果一样

at -d 其实等于直接删除文件 ,/var/spool/at


at 9:00 2016-9-10-1 可以指定时间,年月日

wall holiday     


-V 显示版本信息:

-l: 列出指定队列中等待运行的作业;相当于atq

-d: 删除指定的作业;相当于atrm

-c: 查看具体作业任务

-f /path/from/somefile:从指定的文件中读取任务

at 10:30 -f /root/at.sh

at 10:30 < /root/at.sh

at 10:30 <

touch f1

eof

-m:当任务被完成之后,将给用户发送邮件,即使没有标准输出


HH:MM [YYYY-mm-dd] 10:30 2016-10-1

noon, midnight, teatime(4pm) 04pm March 17

tomorrow      10:30 tomorrow

now+#{minutes,hours,days, OR weeks}

now + 5minutes   04pm + 3 days


at任务

vim /etc/at.deny (黑名单)

zczx 只需要加入用户的名字,就可以禁止该用户使用at。

vim /etc/at.allow 白名单(比黑名单优先)

如果设置了白名单,at只能是白名单有名字的用户才能使用了,即使不在黑名单中。默认这个文件是不存在的,需要自己建立。

如果两个文件都删了,除了管理root用户,其他用户一样使用不了。


cron 周期性

crond

systemctl status crond 7版本 查看服务是否启动

service crond status 6版本

rpm -ql cronie

chkconfig --list crond 可以查看服务是否开机启动

rpm -ql cronie-anacron 辅助包 用于移动端和家用机

系统cron任务:系统维护作业

/etc/crontab

用vim 可以增加计划任务

# Example of job definition:

# .----------------minute (0 -59)

# | .-------------hour (0 -23)

# | | .----------day of month (1 -31)

# | | | .-------month (1 -12) OR jan,feb,mar,apr...

# | | | | .----day of week (0 -6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat

# | | | | |

# * * * * * user-name command to be executed

例如:晚上9点10分运行echo命令;

10 21 * * *centos /bin/echo "Howdy!"


离散值 1,10,20 2,4 1-10,20-28 

1,10,20分钟 2,4小时 1到10,20-28号

*/10 每10分钟一次

@rebootRun  每次重启之后

@yearly 每年

@annually 

@monthly  每个月

@weekly  每星期

@daily 每天

@hourly 每小时

cd /etc/cron.d

cat ohourly 可以查看到格式

系统的计划任务:

/etc/crontab

/etc/cron.d/ 配置文件

/etc/cron.hourly/ 脚本

/etc/cron.daily/脚本

/etc/cron.weekly/脚本

/etc/cron.monthly/脚本


systemctl systemd-tmpfiles-setup 7版本实现清除临时文件


/etc/cron.daily/tmpwatch定时清除临时文件。6版本

日志:/var/log/cron


可以用cat /var/log/cron 查看日志中的周期指令

crontab -e 新建一个周期任务

* * * * * echo zczxcron

0 12 * * * wall class over 12点发送广播

cd /var/spool/cron/ 保存会文件会在这个目录中

通过 crontab 的特殊权限普通用户可以读写。

crontab -r 删除计划任务

所新建的文件名字,就是用户名字命名。

文件名字要和所有者配对,任务才会生效。

发现连配置文件都一起删除

crontab

-l: 列出所有任务;

-e: 编辑任务;

-r: 移除所有任务;

-i:同-r一同使用,以交互式模式移除指定任务

-u user: 仅root可运行,指定用户管理cron任务


/etc/cron.{allow,deny}白名单、黑名单需自己创建

功效与at一样。


一次性作业使用at

重复性作业使用crontab

建立任务   at time   crontab -e

列出任务表 at -l     crontab -l

查看具体任务 at -c jobnumN/A

删除任务   at -d jobnum crontab -r

编辑任务   crontab -e

没有被重定向的输出会被邮寄给用户

根用户能够修改其它用户的作业


对于cron任务来讲,%有特殊用途;如果在命令中要使用%,则需要转义;不过,如果把%放置于单引号中,也可以不用转义


mandb 创建数据库 7版本使用

man 5 crontab

run-parts DIR可以运行指定目录下所有的可执行文件



anacron 6版本之后都取消了这个服务,让crond服务



系统启动和内核管理


linux 组成

Linux: kernel+rootfs

kernel: 进程管理、内存管理、网络管理、驱动程序、文件系统、安全功能


GNU/linux


内核设计流派:

单内核(monolithic kernel):Linux

把所有功能集成于同一个程序

微内核(micro kernel):Windows, Solaris

每种功能使用一个单独子系统实现


Linux内核特点:

支持模块化:.ko(内核对象)

如:文件系统,硬件驱动,网络协议等

支持内核模块的动态装载和卸载

(模块化)


组成部分:

核心文件:/boot/vmlinuz-VERSION-release

ramdisk:辅助的伪根系统

CentOS 5: /boot/initrd-VERSION-release.img

CentOS6,7: /boot/initramfs-VERSION-release.img

模块文件:/lib/modules/VERSION-release


先查找内核,再启动驱动

CentOS6,7: /boot/initramfs-VERSION-release.img 误删了这个文件可以通过开机进去救援系统

chroot /mnt/sysp_w_picpath 切换回根目录

cd /boot

mkinitrd initramfs-`uname -r`.img `uname -r` 重新生成 (5,6版本使用)


Cento5,6

POST加电自检》MBR引导》GRUB》加载内核

centos6启动流程

1.加载BIOS的硬件信息,获取第一个启动设备。

2.读取第一个启动设备MBR的引导加载程序(grub)的启动信息

3.加载核心操作系统的核心信息,核心开始解压缩,并尝试驱动所有的硬件设备。

4.核型执行init程序并获取运行信息。

5.Init执行/etc/rc.d/rc.sysinit文件。

6.启动核心的外挂模块(/etc/modprobe.conf)。

7.Init执行运行的各个批处理文件(scripts).

8.Init执行/etc/rc.d/rc.local.

9.执行/bin/login程序,等待用户登录。

10.登录之后开始以Shell控制主机。


bootloader: 引导加载器,引导程序

rpm -q grub 5,6版本是0.97

rpm -q grup2 7的版本直接成为2


kernel:

自身初始化:

探测可识别到的所有硬件设备

加载硬件驱动程序(可能借助于ramdisk加载驱动)

以只读方式挂载根文件系统

运行用户空间的第一个应用程序:/sbin/init


系统初始化:

POST --> BootSequence(BIOS) --> Bootloader(MBR) --> kernel(ramdisk) --> rootfs(只读) --> init(systemd)


/etc/.rc.sysinit 

/etc/rc.d/rc.sysinit: 系统初始化脚本

(1) 设置主机名

(2) 设置欢迎信息

(3) 激活udev和selinux

(4) 挂载/etc/fstab文件中定义的文件系统

(5) 检测根文件系统,并以读写方式重新挂载根文件系统

(6) 设置系统时钟

(7) 激活swap设备

(8) 根据/etc/sysctl.conf文件设置内核参数

(9) 激活lvm及software raid设备

(10) 加载额外设备的驱动程序

(11) 清理操作

cd /etc/rc.d

K为头的不运行,S为头的运行。决定服务是否启动。

chkconfig --list 可以查看什么服务在什么模式下是否运行

chkconfig atd on 默认开启2,3,4模式

进入 /etc/init.d 下建立脚本

服务脚本

#!/bin/bash

#chkconfig:35 88 22 (3,5模式on 开启S88 关闭K22)

#description:texst service

case $1 in

start)

echo testsrv staring

;;

stop)

echo testsrv stop 

;;

status)

echo testsrv status

;;

*)

echo 'testsrv start|stop|status'

;;

esac

记得写完要用chmod +x 给予执行权限


chkconfig --add testsrv 增加服务板块


service testsrv start  服务开启

stop       关闭

chkconfig --del testsrv 删除服务板块

who -r 可以看现在是什么模式

ntsysv

ntsysv --level=2

yum -y xinted


service xinted status  服务状态查询

  start   服务开启

vim /etc/xinetd

chkconfig telnet on

非独立服务要xinetd 监听

建立于xineted 的运行

7版本全部服务都默认不启动,当需要一个服务就激活一个服务,这样能节省更多的资源。端口和服务独立开了。旧版本服务和端口是绑定关系。


破解5,6口令

进入按a模式

1 s S 单用户,登陆进去就是root用户

passwd 修改回密码 不过只能在本机使用。