进程管理工具
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 修改回密码 不过只能在本机使用。