Linux中如何杀掉僵尸进程

1) 检查当前僵尸进程信息

  # ps -ef | grep defunct | grep -v grep | wc -l

  175

  # top | head -2

  top – 15:05:54 up 97 days, 23:49,  4 users,  load average: 0.66, 0.45, 0.39

  Tasks: 829 total,   1 running, 479 sleeping, 174 stopped, 175 zombie

  # ps -ef | grep defunct | grep -v grep

  2) 获得杀僵尸进程语句

  # ps -ef | grep defunct | grep -v grep | awk {print “kill -9 ” $2,$3}

  执行上面获得的语句即可, 使用信号量9, 僵尸进程数会大大减少.

  3) 过一会儿检查当前僵尸进程信息

  # ps -ef | grep defunct | grep -v grep | wc -l

  125

  # top | head -2

  top – 15:29:26 up 98 days, 12 min,  7 users,  load average: 0.27, 0.54, 0.56

  Tasks: 632 total,   1 running, 381 sleeping, 125 stopped, 125 zombie

  发现僵尸进程数减少了一些, 但还有不少啊.

  4) 再次获得杀僵尸进程语句

  # ps -ef | grep defunct | grep -v grep | awk {print “kill -18 ” $3}

  执行上面获得的语句即可, 这次使用信号量18杀其父进程, 僵尸进程应该会全部消失.

  5) 过一会儿再检查当前僵尸进程信息

  # ps -ef | grep defunct | grep -v grep | wc -l

  0

  # top | head -2

  top – 15:39:46 up 98 days, 23 min,  7 users,  load average: 5.46, 2.20, 1.12

  Tasks: 134 total,   1 running, 133 sleeping,   0 stopped,   0 zombie

  6) 清除ZOMBIE(僵尸)进程原理

  # kill -18 PPID

  PPID是其父进程, 这个信号是告诉父进程, 该子进程已经死亡了, 请收回分配给他的资源.

如果还不行则看先看其父进程又无其他子进程, 如果有, 可能需要先kill其他子进程, 也就是兄弟进程.

  方法是:

  # kill -15 PID1 PID2

  PID1,PID2是僵尸进程的父进程的其它子进程.

  然后再kill父进程:

  # kill -15 PPID

Linux中增加swap分区文件的方法

在Linux中有两种方式增加swap分区文件,第一,新建一个磁盘分区,挂载为swap分区,第二,增加一个足够大的文件来作为swap分区。

1、重新划分一个分区,假定此分区是sda9,然后在/etc/fstab中加入

/dev/sda9 swap swap defaults 0 0

2、如果没有剩余的磁盘空间,

    1) 创建一个足够大的文件
dd if=/dev/zero of=/swapfile bs=1024 count=262144
    (count的值等于1024 x 你想要的文件大小, 262144是256M)
    2) 把这个文件变成swap文件.
mkswap /swapfile
    3) 启用这个swap文件
swapon /swapfile
    4) 在每次开机的时候自动加载swap文件, 需要在 /etc/fstab 文件中增加一行
/swapfile swap swap defaults 0 0

Linux 技巧:让进程在后台可靠运行的几种方法

想让进程在断开连接后依然保持运行?如果该进程已经开始运行了该如何补救? 如果有大量这类需求如何简化操作?

我们经常会碰到这样的问题,用 telnet/ssh 登录了远程的 Linux 服务器,运行了一些耗时较长的任务, 结果却由于网络的不稳定导致任务中途失败。如何让命令提交后不受本地关闭终端窗口/网络断开连接的干扰呢?您可以针对不同的场景选择不同的方式来处理这个问题。

1、nohup/setsid/&

2、disown

3、screen

详细内容请参看http://www.ibm.com/developerworks/cn/linux/l-cn-nohup/

调整Linux控制台分辨率

VESA:

Colors   (depth) 640×480 800×600 1024×768 1280×1024 1600×1200
256 ( 8 bit) 769 771 773 775 796
32,768 (15 bit) 784 787 790 793 797
65,536 (16 bit) 785 788 791 794 798
16.8M (24 bit) 786 789 792 795 799

查找上表找到序号的分辨率,例如16位颜色,800×600分辨率,即是788,然后找到Linux启动的配置文件,下面以CentOS5.3 grub为例,打开/etc/grub.conf

title CentOS (2.6.18-164.el5)
        root (hd0,0)
        kernel /vmlinuz-2.6.18-164.el5 ro root=/dev/VolGroup00/LogVol00 rhgb quiet vga=788
        initrd /initrd-2.6.18-164.el5.img

在kernel一行的末尾加上vga=788,重新启动即可,若控制台无法支持当前设置,则设置不会生效。