存档

  • 在Linux下查看环境变量

    系统的环境变量在配置web server以及编写程序都常常被用到, 因此了解必要的关于系统变量的知识是非常有必要的.
    本文简述关于linux系统变量的查看以及甚至方法等, 希望对大家有用.
    在Windows下,查看环境变量的命令是:set,这个命令会输出系统当前的环境变量。
    Linux下准确的说是REDHAT下应该如何查看呢,命令是:
    export
    如果你想查看某一个名称的环境变量,命令是:echo $环境变量名,比如:
    echo $ORACLE_HOME
    Windows对应的命令是:set 环境变量名。
    外补一篇:   1. 显示环境变量HOME
      $ echo $HOME
      /home/redbooks
      2. 设置一个新的环境变量hello
      $ export HELLO=”Hello!”
      $ echo $HELLO
      Hello!
      3. 使用env命令显示所有的环境变量
      $ env
      HOSTNAME=redbooks.safe.org
      PVM_RSH=/usr/bin/rsh
      SHELL=/bin/bash
      TERM=xterm
      HISTSIZE=1000
      …
      4. 使用set命令显示所有本地定义的Shell变量
      $ set
      BASH=/bin/bash
      BASH_VERSINFO=([0]=”2″[1]=”05b”[2]=”0″[3]=”1″[4]=”release”[5]=”i386-redhat-Linux-gnu”)
      BASH_VERSION=’2.05b.0(1)-release’
      COLORS=/etc/DIR_COLORS.xterm
      COLUMNS=80
      DIRSTACK=()
      DISPLAY=:0.0
      …
      5. 使用unset命令来清除环境变量
      set可以设置某个环境变量的值。清除环境变量的值用unset命令。如果未指定值,则该变量值将被设为NULL。示例如下:
      $ export TEST=”Test…” #增加一个环境变量TEST
      $ env|grep TEST #此命令有输入,证明环境变量TEST已经存在了
      TEST=Test…
      $ unset $TEST #删除环境变量TEST
      $ env|grep TEST #此命令没有输出,证明环境变量TEST已经存在了
      6. 使用readonly命令设置只读变量
      如果使用了readonly命令的话,变量就不可以被修改或清除了。示例如下:
      $ export TEST=”Test…” #增加一个环境变量TEST
      $ readonly TEST #将环境变量TEST设为只读
      $ unset TEST #会发现此变量不能被删除
      -bash: unset: TEST: cannot unset: readonly variable
      $ TEST=”New” #会发现此也变量不能被修改
      -bash: TEST: readonly variable
      环境变量的设置位于/etc/profile文件
      如果需要增加新的环境变量可以添加下属行
      export path=$path:/path1:/path2:/pahtN

    2008年10月9日 | 归档于 Linux教程
  • initramfs 简单的制作方法

    Linus 本人在 Linux 2.6 时代所提出的 “initramfs” 是一种更好的 “root=” 做法。
    简单來说,initramfs 就是「kernel 2.6 的
    initrd」。Initrd(initial ramdisk)即 /dev/ram0,是一种普遍使用在 embedded Linux
    的观念;embedded Linux 利用 initrd 来载入 root filesystem(或是 bootstrap root
    filesystem 后再以 NFS 挂载完整 RFS)。
    下面介绍制作 Linux 2.6 的 initramfs 简单方法。假设 RFS 的目录为 /home/rootfs,則制作 initramfs 的命令为:
    # cd /home/rootfs
    # find . | cpio -o -H newc | gzip -9 >../cramfs.gz
    更明确的说,initramfs 是 “compressed” ramfs(ram filesystem),ramfs [...]

    2008年9月27日 | 归档于 Linux教程
    标签:
  • 文件描述符

    本文详细说明了文件描述符得概念, 让大家能更深入的了解文件描述,希望对大家有所用处。文件描述符概述
      内核(kernel)利用文件描述符(file descriptor)来访问文件。文件描述符是非负整数。打开现存文件或新建文件时,内核会返回一个文件描述符。读写文件也需要使用文件描述符来指定待读写的文件。  习惯上,标准输入(standard input)的文件描述符是 0,标准输出(standard output)是 1,标准错误(standard error)是 2。尽管这种习惯并非 Unix 内核的特性,但是因为一些 shell 和很多应用程序都使用这种习惯,因此,如果内核不遵循这种习惯的话,很多应用程序将不能使用。  POSIX 定义了 STDIN_FILENO、STDOUT_FILENO 和 STDERR_FILENO 来代替 0、1、2。这三个符号常量的定义位于头文件 unistd.h。  文件描述符的有效范围是 0 到 OPEN_MAX。一般来说,每个进程最多可以打开 64 个文件(0 — 63)。对于 FreeBSD 5.2.1、Mac OS X 10.3 和 Solaris 9 来说,每个进程最多可以打开文件的多少取决于系统内存的大小,int 的大小,以及系统管理员设定的限制。Linux 2.4.22 强制规定最多不能超过 1,048,576 。  文件描述符是由无符号整数表示的句柄,进程使用它来标识打开的文件。文件描述符与包括相关信息(如文件的打开模式、文件的位置类型、文件的初始类型等)的文件对象相关联,这些信息被称作文件的上下文。
    如何创建文件描述符
      进程获取文件描述符最常见的方法是通过本机子例程open或create获取或者通过从父进程继承。后一种方法允许子进程同样能够访问由父进程使用的文件。文件描述符对于每个进程一般是唯一的。当用fork子例程创建某个子进程时,该子进程会获得其父进程所有文件描述符的副本,这些文件描述符在执行fork时打开。在由fcntl、dup和dup2子例程复制或拷贝某个进程时,会发生同样的复制过程。  第二个异常在JVM进程缺乏文件描述符时出现(尽管在执行forkAndExec()子例程时丆需要新的文件描述符来复制父进程的文件描述符)。对于每个进程,操作系统内核在u_block结构中维护文件描述符表,所有的文件描述符都在该表中建立索引。
    如何在不同平台上定义文件描述符的数量
      文件描述符极限以及可分配给进程的最大大小由资源限制来定义。这些值应当按照在WebLogicServer文档中建议的、特定于操作系统的文件描述符值来设置:  对于WLS8.1:调整硬件、操作系统和网络性能  对于WLS7.0:调整硬件、操作系统和网络性能  对于WLS6.1:调整硬件、操作系统和网络性能  Unix和Linux都有文件描述符。不过,二者的主要区别在于如何设置文件描述符的硬极限值、缺省值和配置过程。
      Solaris  /usr/bin/ulimit实用程序定义允许单个进程使用的文件描述符的数量。它的最大值在rlim_fd_max中定义,在缺省情况下,它设置为65,536。只有root用户才能修改这些内核值。
      Linux  管理用户可以在etc/security/limits.conf配置文件中设置他们的文件描述符极限,如下例所示。  softnofile1024  hardnofile4096  系统级文件描述符极限还可以通过将以下三行添加到/etc/rc.d/rc.local启动脚本中来设置:  #Increasesystem-widefiledescriptorlimit.  echo4096>/proc/sys/fs/file-max  echo16384>/proc/sys/fs/inode-max
      Windows  在Windows操作系统上,文件描述符被称作文件句柄。在Windows2000服务器上,打开文件的句柄极限设置为16,384。此数量可以在任务管理器的性能摘要中监视。
      HP-UX  nfile定义打开文件的最大数量。此值通常由以下公式来确定:((NPROC*2)+1000),其中NPROC通常为:((MAXUSERS*5)+64)。如果MAXUSERS等于400,则经过计算得到此值为5128。通常可以将此值设高一些。maxfiles是每个进程的软文件极限,maxfiles_lim是每个进程的硬文件极限。
      AIX  文件描述符极限在/etc/security/limits文件中设置,它的缺省值是2000。此极限可以通过ulimit命令或setrlimit子例程来更改。最大大小由OPEN_MAX常数来定义。

    2008年9月19日 | 归档于 Linux教程
  • Linux 杀死进程方法

    Linux 下杀死进程最安全的方法是单纯使用kill命令,不加修饰符,不带标志。
    首先使用ps -ef命令确定要杀死进程的PID,然后输入以下命令:
    # kill -pid
    注释:标准的kill命令通常都能达到目的。终止有问题的进程,并把进程的资源释放给系统。然而,如果进程启动了子进程,只杀死父进程,子进程仍在运行,因此仍消耗资源。为了防止这些所谓的“僵尸进程”,应确保在杀死父进程之前,先杀死其所有的子进程。 
    确定要杀死进程的PID或PPID
    # ps -ef | grep httpd 
    以优雅平和的方式结束进程
    # kill -l PID
    -l选项告诉kill命令用好像启动进程的用户已注销的方式结束进程。当使用该选项时,kill命令也试图杀死所留下的子进程。但这个命令也不是总能成功–或许仍然需要先手工杀死子进程,然后再杀死父进程。 
    TERM信号
    给父进程发送一个TERM信号,试图杀死它和它的子进程。
    # kill -TERM PPID 
    killall命令
    killall命令杀死同一进程组内的所有进程。其允许指定要终止的进程的名称,而非PID。
    # killall httpd 停止和重启进程 
    有时候只想简单的停止和重启进程。如下:
    # kill -HUP PID
    该命令让Linux和缓的执行进程关闭,然后立即重启。在配置应用程序的时候,这个命令很方便,在对配置文件修改后需要重启进程时就可以执行此命令。 
    绝杀 kill -9 PID
    同意的 kill -s SIGKILL
    这个强大和危险的命令迫使进程在运行时突然终止,进程在结束后不能自我清理。危害是导致系统资源无法正常释放,一般不推荐使用,除非其他办法都无效。
    当使用此命令时,一定要通过ps -ef确认没有剩下任何僵尸进程。只能通过终止父进程来消除僵尸进程。如果僵尸进程被init收养,问题就比较严重了。杀死init进程意味着关闭系统。
    如果系统中有僵尸进程,并且其父进程是init,而且僵尸进程占用了大量的系统资源,那么就需要在某个时候重启机器以清除进程表了。

    2008年9月18日 | 归档于 Linux教程
  • 关于 bin 文件格式

    bin是一种文件格式,bin可能不只是一个启动文件,也可能是一个可执行文件,也可能是一个NERO的映象文件。
    如果是启动文件,可以用RAWRITE.EXE命令写到软盘上,RAWRITE.EXE可以在大多数LINUX发行版光盘上找到
    关于bin文件的运行一般根据大小判断文件类型
    如果是可执行文件的话,chmod +x 文件名,然后./文件名即可运行
    如果是大的镜像,里面内容如果是影视内容,可以直接用mplayer打开播放
    如果是其他内容,可以用bin2iso转换成iso文件再mount

    2008年9月18日 | 归档于 Linux教程
  • 解决Linux中文乱码问题

    linux中文乱码主要是由于终端对中文的支持或者默认得设定属性问题造成的, 大家可以参考如下解决方案
    1、console终端乱码
    在/etc/profile文件的最后一行添加如下内容:
    export LC_ALL=”zh_CN.GB18030″
    2、xwindow终端乱码
    在/etc/sysconfig/i18n文件的最后一行添加如下内容:
    export LC_ALL=”zh_CN.GB18030″
    更为详细的参考请参加: http://www.linuxsense.cn/solve-linux-terminal-worry-chinese-code.html

    2008年9月18日 | 归档于 Linux教程
  • 查看 Linux 文件夹大小

    查看 linux 文件目录的大小和文件夹包含的文件数算是比较常用的 linux 命令
    查看目录(文件夹)dirname的大小:du -sh /路径/dirname
    查看目录(文件夹)dirname下所有文件和文件夹的大小:du -sh /路径/dirname/*
    具体请 man du 来查看du命令的使用详情:或者参加本文: linux的du命令详解

    2008年9月17日 | 归档于 Linux教程
  • Linux系统调用 kill 函数详解

    kill系统调用
    功能描述:用于向任何进程组或进程发送信号。
    用法: #include <sys/types.h>#include <signal.h>
    int kill(pid_t pid, int sig); 
    参数: pid:可能选择有以下四种
    1. pid大于零时,pid是信号欲送往的进程的标识。2. pid等于零时,信号将送往所有与调用kill()的那个进程属同一个使用组的进程。3. pid等于-1时,信号将送往所有调用进程有权给其发送信号的进程,除了进程1(init)。4. pid小于-1时,信号将送往以-pid为组标识的进程。
    sig:准备发送的信号代码,假如其值为零则没有任何信号送出,但是系统会执行错误检查,通常会利用sig值为零来检验某个进程是否仍在执行。
    返回说明: 成功执行时,返回0。失败返回-1,errno被设为以下的某个值 EINVAL:指定的信号码无效EPERM;没有给任何目标进程发送信号的权限ESRCH:目标进程或进程组不存在

    2008年9月10日 | 归档于 Linux教程
  • IPtables常用命令及参数指南

    我们将要介绍所有的command以及它们的用途。command指定iptables 对我们提交的规则要做什么样的操作。这些操作可能是在某个表里增加或删除一些东西,或做点儿其他什么。以下是iptables可用的command(要注意,如不做说明,默认表的是 filter表。

    Command -A, –append
    Example iptables -A INPUT …
    Explanation 在所选择的链末添加规则。当源地址或目的地址是以名字而不是ip地址的形式出现时,若这些名字可以被解析为多个地址,则这条规则会和所有可用的地址结合。
    Command -D, –delete
    Example iptables -D INPUT –dport 80 -j DROP或iptables -D INPUT 1
    Explanation 从所选链中删除规则。有两种方法指定要删除的规则:一是把规则完完整整地写出来,再就是指定规则在所选链中的序号(每条链的规则都各自从1被编号)。
    Command -R, –replace
    Example iptables -R INPUT 1 -s 192.168.0.1 -j DROP
    Explanation 在所选中的链里指定的行上(每条链的规则都各自从1被编号)替换规则。它主要的用处是试验不同的规则。当源地址或目的地址是以名字而不是ip地址的形式出现时,若这些名字可以被解析为多个地址,则这条command会失败。
    Command -I, –insert
    Example iptables -I INPUT 1 –dport 80 -j ACCEPT
    Explanation 根据给出的规则序号向所选链中插入规则。如果序号为1,规则会被插入链的头部,其实默认序号就是1。
    Command -L, –list
    Example iptables -L INPUT
    Explanation 显示所选链的所有规则。如果没有指定链,则显示指定表中的所有链。如果什么都没有指定,就显示默认表所有的链。精确输出受其它参数影响,如-n 和-v等参数,下面会介绍。
    Command -F, –flush
    Example iptables -F INPUT
    Explanation 清空所选的链。如果没有指定链,则清空指定表中的所有链。如果什么都没有指定,就清空默认表所有的链。当然,也可以一条一条地删,但用这个command会快些。
    Command -Z, –zero
    Example iptables -Z INPUT
    Explanation 把指定链(如未指定,则认为是所有链)的所有计数器归零。
    Command -N, –new-chain
    Example iptables -N allowed
    Explanation 根据用户指定的名字建立新的链。上面的例子建立了一个名为allowed的链。注意,所用的名字不能和已有的链、target同名。
    Command -X, –delete-chain
    Example iptables -X allowed
    Explanation 删除指定的用户自定义链。这个链必须没有被引用,如果被引用,在删除之前你必须删除或者替换与之有关的规则。如果没有给出参数,这条命令将会删除默认表所有非内建的链。
    Command -P, –policy
    Example iptables -P INPUT DROP
    Explanation 为链设置默认的target(可用的是DROP和ACCEPT,如果还有其它的可用,请告诉我),这个target称作策略。所有不符合规则的包都被强制使用这个策略。只有内建的链才可以使用规则。但内建的链和用户自定义链都不能被作为策略使用,也就是说不能象这样使用:iptables -P INPUT [...]

    2008年9月8日 | 归档于 Linux教程
  • Linux添加/删除用户和用户组

    本文总结了Linux添加或者删除用户和用户组时常用的一些命令和参数, 值得Linux初学者一读

    1、建用户:
    adduser linuxsense                            //新建linuxsense用户passwd linuxsense                               //给linuxsense用户设置密码
    2、建工作组
    groupadd test                           //新建test工作组
    3、新建用户同时增加工作组
    useradd -g test linuxsense               [...]

    2008年9月8日 | 归档于 Linux教程
‘Linux教程’ 分类的存档