低调~低调

发布新日志

  • linux fuser命令 解决”umount: /mnt/cdrom: device is busy”

    2010-12-16 22:01:39

                      linux fuser命令 解决”umount: /mnt/cdrom: device is busy” 

    今天在卸载光驱时,系统报了个提示:“device is busy”。上网查了查,查到fuser

    这个命令,看了网上的介绍,个人觉得蛮有用的,用文件或者套节字来表示识别进程。有

    两个常用功能:查看我需要的进程和要杀死我查到的进程。

    比如当你想umount光驱的时候,结果系统提示你设备正在使用或者正忙,可是你又找不

    到到底谁使用了他。这个时候fuser可派上用场了。

    [root@k99378 root]# eject

    umount: /mnt/cdrom: device is busy

    umount: /dev/cdrom: device is busy

    eject: unmount of `/mnt/cdrom’ failed

    [root@k99378 root]# fuser /mnt/cdrom

    /mnt/cdrom: 4561c 5382c

    [root@k99378 root]# ps -ef |egrep ‘(4561|5382)’ |grep -v grep

    root 4561 4227 0 20:13 pts/1 00:00:00 bash

    root 5382 4561 0 21:42 pts/1 00:00:00 vim Autorun.inf

    示例中,我想弹出光驱,系统告诉我设备忙着,于是采用fuser命令,参数是你文件或

    scoket,fuser将查出那些使用了他。4561c,5382c表示目前用两个进程在占用

    着/mnt/cdrom,分别是4561,5382,进程ID后的字母表示占用资源的方式,有下面几种表 

    示:

    c  当前路径(current directory.)我的理解是表示这个资源的占用是以文件目录方式,也就是进进入了需要释放的资源的路径,这是最常用的资源占用方式。

    e  正在运行可执行文件(executable being run.),比如运行了光盘上的某个程序

    f 打开文件( open file),缺省模式下f忽略。所以上面的例子中,虽然是开打了光

    盘上的Autorun.inf文件,但是给出的标识是c,而不是f。

    r root目录(root directory).没有明白什么意思,难道是说进入了/root这个特定目录?

    m mmap文件或者共享库( mmap’ed file or shared library).这应该是说某个进程使

    用了你要释放的资源的某个共享文件。

    在查 找的同时,你还可定指定一些参数,比如:

    -k 杀死这些正在访问这些文件的进程。除非使用-signal修改信号,否则将发送

    SIGKILL信号。

    -i 交互模式

    -l 列出所有已知的信号名称。

    -n 空间,选择不同的名字空间,可是file,udp,tcp。默认是file,也就是文件。

    -signal 指定发送的信号,而不是缺省的SIGKILL

    -4 仅查询IPV4套接字

    -6 仅查询IPV6套接字

    - 重置所有的选项,将信息设回SIGKILL

    再看下面的例子

    [root@k99378 root]# fuser -l

    HUP INT QUIT ILL TRAP ABRT IOT BUS FPE KILL USR1 SEGV USR2 PIPE ALRM TERM

    STKFLT CHLD CONT STOP TSTP TTIN TTOU URG XCPU XFSZ VTALRM PROF WINCH IO PWR 

    SYS

    UNUSED

    现在我们试试fuser -k的威力:

    [root@k99378 root]# fuser -k /mnt/cdrom

    /mnt/cdrom: 4561c 5382c

    kill 5382: 没有那个进程

    No automatic removal. Please use umount /media/cdrom

    [root@k99378 root]# eject

    套节字方式的使用:

    [root@k99378 root]# fuser -4 -n tcp 3306

    here: 3306

    3306/tcp: 5595

    [root@k99378 root]# ps -ef |grep 5595 |grep -v grep

    mysql 5595 5563 0 22:24 pts/0 00:00:00 /usr/libexec/mysqld –defaults-

    file=/etc/my.cnf –basedir=/usr –datadir=/var/lib/mysql –user=mysql –pid

    -file=/var/run/mysqld/mysqld.pid –skip-locking –socket=/var/lib/mysql/mysql.sock

    [root@k99378 root]# fuser -4 -n tcp 80

    here: 80

    80/tcp: 5685 5688 5689 5690 5691 5692 5693 5694 5695

    温馨小提示:如果注销root可使用命令 fuser -km /

  • Linux下搭建jdk和tomcat(转)

    2009-07-22 18:20:40

    1) 启动-本机网络服务(桥接,直接连接外网)netcfg -l %systemroot%\inf\netbridge.inf -c s -i vmware_bridge net start VMNETBRIDGE

          2 启动-DHCPNAT服务(共享上网,默认安装虚拟网卡8
    3
    )安装虚拟网卡1(本地网络)--------我下载的虚拟机有个批处理,这个精简版的好象都有的。
    4
    )在虚拟机的以太网设置里面,使用桥接:

        (图片请查看附件的图片1.jpg)


    5
    )进入虚拟机的Linux后,进行如下的操作:
    a)
    新建终端:
    同时按下shift+ctrl+alt+F1 进入命令界面

      (图片请查看附件的图片2.jpg)



    b
    )在刚建立的终端上键入netconfig 回车后:
        (图片请查看附件的图片3.jpg)

        (图片请查看附件的图片4.jpg)



    一般的情况是;当你输入你的IP后,我的192.168.1.99没被占用用,所以我输入这个,后面三项都是自动生成的,但是记得把34项修改一下,(我的是相当于一个小局域网,所以网关是192.168.1.1,最后一项是填所在地的电信服务网关)。确定后,进行如下的操作:
    在命令界面输入:service network restart
    以上就是激活网卡。

    接下来开始配置jdk

    1. jdk-6u1-linux-i586.bin复制到/usr/local 文件夹下

    2. 进入linux的命令窗口,输入以下命令

    a)       cd  /usr/local/                                         //更改工作目录到/usr/local/

    b)       cp  /files/jdk-6u1-linux-i586.bin  ./          //复制文件到当前目录

    c)       chmod  a+x  jdk-6u1-linux-i586.bin               //给安装文件添加执行权限

    d)       ./ jdk-6u1-linux-i586.bin                              //执行当前目录下的安装文件

    e)       按空格键翻页,在最底部输入yes 回车确认,开始安装

    3. java的执行文件创建必要的快捷方式

    a)       ln  -sf  /usr/local/jdk1.6.0_01  /usr/local/jdk1.6

    b)       ln  -sf  /usr/local/jdk1.6/bin/java  /usr/bin/

    c)       ln  -sf  /usr/local/jdk1.6/bin/javac /usr/bin/

    4. 添加java的环境变量

    a)       vi /etc/profile            //输入I 在最后添加以下四行代码

    b)       JAVA_HOME=/usr/local/jdk1.6

    c)       CLASSPATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:./

    d)       PATH=$JAVA_HOME/bin:$PATH

    e)       Export  JAVA_HOME  CLASSPATH PATH //将以上变量声明为全局变量

    f)          esc 键后输入:wq 回车

    5. 重新启动linux,是刚配置的环境变量起作用

    6. 测试

    a)       输入 java  -version         //验证java的版本

    b)       vi  Hello.java           //输入i

    c)       public class Hello{

    d)           public static void main(String[] args){

    e)             System.out.println(“Hello World!”);

    f)              }

    g)       }

    h)       esc 后输入:wq 回车

    i)          Javac Hello.java

    j)          Java Hello

    7. 完成

     

    8. 下面开始配置服务器Tomcat6.0

    9. tar  zxvf /files/apache-tomcat-6.0.14.tar.gz  -C  /usr/local              //解压文件

    10.   添加快捷方式

    ln  -sf  /usr/local/apache-tomcat-6.0.14    /usr/local/tomcat

    11.   配置环境变量

    a)       vi /etc/profile            //输入I 在最后添加以下四行代码

    b)       JAVA_HOME=/usr/local/jdk1.6

    c)       CATALINA_HOME=/usr/local/tomcat

    d)       CLASSPATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:CATALINA_HOME/lib/servlet-api.jar:$./

    e)       PATH=$JAVA_HOME/bin:$PATH

    f)          Export  JAVA_HOME  CATALINA_HOME  CLASSPATH PATH //将以上变量声明为全局变量

    g)       esc 键后输入:wq 回车

     

    12.   测试

    13.   在命令窗口输入 /usr/local/tomcat/bin/starup.sh

    14.   出现下列信息说明成功

        (图片请查看附件的图片5.jpg)

         Linux文件系统损坏后的修复技巧详细介绍

    文章来源: 网上     文章类型:转载

    Linux文件系统损坏后的修复技巧详细介绍 

    Linux不正常关机,有时候再次启动时会报文件系统损坏,如何修复文件?

    首先会让你输入root用户的密码。

    1)出错的时候如果告诉你是哪一块硬盘的分区有问题,比如是/dev/hda3

    接着用如下的命令去对付它呀:

    #fsck -y /dev/hda3

    结束后,reboot。这样就OK了!

    2)如果你不知道时哪个地方出了问题。(常用此种方法)

    可以直接

    #fsck

    在随后的多个确认对话框中输入:y

    结束后,reboot。就ok了。

    说明: 对Linux系统中常用文件系统的检查是通过fsck工具来完成的。

    功能说明:检查文件系统并尝试修复错误。

    语  法:fsck [-aANPrRsTV][-t <文件系统类型>][文件系统...]

    补充说明:当文件系统发生错误四化,可用fsck指令尝试加以修复。

    参  数:

    -a 自动修复文件系统,不询问任何问题。

    -A 依照/etc/fstab配置文件的内容,检查文件内所列的全部文件系统。

    -N 不执行指令,仅列出实际执行会进行的动作。

    -P 当搭配"-A"参数使用时,则会同时检查所有的文件系统。

    -r 采用互动模式,在执行修复时询问问题,让用户得以确认并决定处理方式。

    -R 当搭配"-A"参数使用时,则会略过/目录的文件系统不予检查。

    -s 依序执行检查作业,而非同时执行。

    -t<文件系统类型>指定要检查的文件系统类型。

    -T 执行fsck指令时,不显示标题信息。

    -V 显示指令执行过程。

    fsck检查文件系统完整性文件系统很复杂,因此易于发生错误。可以用fsck 命令检查文件系统是否正确和有效。它可以根据指令修复找到的小错误,并将未修复错误报告用户。幸运的是,文件系统的代码非常有效,所以根本极少出现问题,并且问题通常原因是电源失败、硬件失败、或操作错误,例如没有正常关闭系统。 大多数系统设置为启动时自动运行fsck ,因此任何错误将在系统使用前被检测到(并根据希望修正)。使用有错误的文件系统可能使问题变得更坏:如果数据结构有问题,使用这个文件系统可能使之更糟,导致更多的数据丢失。当然,在大的文件系统上运行fsck 会花一定的时间,如果系统正常关闭,几乎从不发生错误,因此有一些方法可以不进行检查。如果文件/etc/fastboot 存在,就不检查。另外,如果ext2文件系统在超级快中有一个特定的标记告知该文件系统在上次mount后没有正常unmount. 如果标记指出unmount正常完成(假设正常unmount指出没问题)e2fsck (fsck ext2文件系统版) 就不检查系统。/etc/fastboot 是否影响系统依赖于你的启动手稿,但ext2标记则在你使用e2fsck 时发生作用--基于一个e2fsck 选项(参阅e2fsck 手册页) 自动检查只对启动时自动mount的文件系统发生作用。使用fsck 手工检查其他文件系统,比如软盘。 如果fsck 发现为修复的问题,你需要深入了解文件系统的一般工作原理和有问题的文件系统的细节,或好的备份。最后一个办法容易(虽然冗长)安排,如果你自己不知道,有时可以通过朋友、linux新闻组、电子邮件列表或其他支持源安排。我很想告诉你更多,但我对这的学习和实践也并不多。

    theodore t'sodebugfs 程序应该有用。 fsck 只能运行于未mount的文件系统,不要用于已mount的文件系统(除了启动时的只读根文件系统)。这是因为它存取原始磁盘,在操作系统不知道的情况下修改文件系统。 there will be trouble, if the operating system is confused.

Open Toolbar