检查磁盘及文件系统错误
要检查分区或文件系统的错误,只需要将路径作为fsck的参数:
fsck /dev/sdbs
检查/etc/fstab中所配置的所有文件系统:
fsck -A
指定fsck自动修复错误,无需询问是否进行修复:
fsck -a /dev/sda2
模拟fsck要执行的操作:
fsck -AN
收集进程信息
ps -e -f (e,every;f,full显示多列 )
选项-o可以使用不同的参数
参数 描述
pcpu CPU占用率
pid 进程ID
ppid 父进程ID
pmem 内存使用率
comm 可执行文件名
cmd 简单命令
user 启动进程的用户
nice 优先级
time 累计的CPU时间
etime 进程启动后流逝的时间
tty 所关联的TTY设备
euid 有效用户ID
stat 进程状态
ps -eo comm,pcpu | head
top对于系统管理员来说是一个极为重要的命令。它默认会输出一个占用CPU最多的进程列表。输出结果每隔几秒就会更新。
杀死进程以及发送或响应信号
列出所有可用的信号 kill -l
终止进程:kill PROCESS_ID_LIST
kill命令默认发出一个TERM信号。进程ID列表使用空格作为进程ID之间的定界符。
要通过kill命令向进程发送指定的信号,可以使用:kill -s SIGNAL PID 经常使用的有:
- SIGHUP 1 对控制进程或终端的终结进行挂起检测。
- SIGINT 2 当按下Ctrl + C 时发送该信号
- SIGKILL 9 用于强行杀死进程
- SIGTERM 15 默认用于终止进程
- SIGTSTP 20 当按下Ctrl + Z时发送该信号
当我们要强行杀死一个程序时,可以使用
kill -s SIGKILL PROCESS_ID
kill -9 PROCESS_ID
killall process_name #通过命令名终止进程
killall -s SIGNAL process_name #通过名称向进程发送信号
killall -9 process_name #通过名称强行杀死进程
能够响应信号SIGINT 的shell脚本
#!/bin/bash
function handler()
{
echo Hey, received signal : SIGINT
}
echo My process ID is $$
#$$是一个特殊的变量,它可以返回当前进程/脚本的进程的ID
trap 'handler' SIGINT
#handler是信号SIGINT的信号处理程序的名称
while true;
do
sleep 1
done
向用户终端发送消息
向终端中所有的当前登录用户发送广播消息:
cat message | wall
wall< message
向指定用户的终端发送消息的脚本
#!/bin/bash
USERNAME=$1
devices=`ls /dev/pts/* -l | awk '{ print $3,$10 }' | grep $USERNAME | awk '{ print $2 }'`
for dev in $devices;
do
cat /dev/stdin > $dev
done
运行脚本:
./message_user.sh USERNAME < message.txt
#通过stdin传递消息,USERNAME作为参数