linux/unixFAQ积累

来源:互联网 发布:深度解析淘宝运营 编辑:程序博客网 时间:2024/05/22 14:17
  1.  Makefile
    1)执行make 命令的时候,出现如下错误
    Makefile:22: *** missing separator.  Stop.
    Makefile中命令行的开头用tab开始,出现和上面类似的错误信息是因为缺少分隔符,命令行需要tab开头,注意检查提示行号附近的命令行,在开头输入tab就解决问题.
  2. /etc/profile和$HOME/.profile 环境变量设置
    用户登录的时候,先执行/etc/profile,然后再执行$HOME/.profile ,可以将profile和.profile看成shell脚本,修改这两个文件可以改变用户登录之后的一些属性.
    如果修改/etc/profile文件中的配置,可以改变所有登录用户的默认环境变量
    修改用户HOME目录下的.profile,只能改变当前登录用户的默认环境变量.
    linux下为/etc/profile,$HOME/.bash_profile
    unix下为/etc/profile,$HOME/.profile
  3. umask
    umask是从最大权限位中拿掉一部分权限位
    为安全考虑,创建普通文件的时候,不会有x执行权限位.
    umask的计算方法
    第一步,我们首先写下具有全部权限的模式,即7 7 7 (所有用户都具有读、写和执行权限)。
    第二步,在下面一行按照u m a s k值写下相应的位,在本例中是0 0 2。
    第三步,在接下来的一行中记下上面两行中没有匹配的位。这就是目录的缺省创建权限。
    稍加练习就能够记住这种方法。
    第四步,对于普通文件来说,在创建时不能具有文件执行权限,只要拿掉相应的执行权限比特即
    可。
    这就是上面的例子,其中u m a s k值为0 0 2:
    1) 文件的最大权限rwx rwx rwx (777)
    2) umask值为0 0 2 - - - - - - -w-
    3) 目录权限rwx rwx r-x (775) 这就是目录创建缺省权限
    4) 文件权限rw- rw- r-- (664) 这就是文件创建缺省权限
    可以用umask命令查看当前的umask,umask xxx修改当前的umask
    可以在.bash_profile或者.profile中添加umask xxx命令修改登录用户的默认umask值.
  4. touch 创建任意更新日期的文件
    touch可以创建任意更新日期的文件
    修改文件的时候,文件的更新日期都将是当前日期,使用touch就可以创建一个任意更新日期的文件
    命令:
    touch -t yymmhhss filename
  5. shell:syntax error: unexpected end of file
    在linux/unix下编写shell程序的时候,一定要注意括号,如果出现如上错误信息,请检查括号是否配对.
  6. 删除find查找到得文件(批量删除文件)
    find ./* -name S99oracle -exec rm {} /;
    查找到文件S99oracle直接删除;
    find ./* -name K01oracle -ok rm {} /;
    查找到文件K01oracle提示是否删除;
  7. chkconfig,linux系统服务设置
    chkconfig命令主要用来更新(启动或停止)和查询系统服务的运行级信息。谨记chkconfig不是立即自动禁止或激活一个服务,它只是简单的改变了符号连接。语法:      chkconfig --list [name]
          chkconfig --add name
          chkconfig --del name
          chkconfig [--level levels] name <on|off|reset>
          chkconfig [--level levels] name
          chkconfig 没有参数运行时,显示用法。如果加上服务名,那么就检查这个服务是否在当前运行级启动。如果是,返回true,否则返回false。如果在服务名后面指定了on,off或者reset,那么chkconfi 会改变指定服务的启动信息。on和off分别指服务被启动和停止,reset指重置服务的启动信息,无论有问题的初始化脚本指定了什么。on和off开关,系统默认只对运行级3,4,5有效,但是reset可以对所有运行级有效。      --level选项可以指定要查看的运行级而不一定是当前运行级。      需要说明的是,对于每个运行级,只能有一个启动脚本或者停止脚本。当切换运行级时,init不会重新启动已经启动的服务,也不会再次去停止已经停止的服务。
          chkconfig --list :显示所有运行级系统服务的运行状态信息(on或off)。如果指定了name,那么只显示指定的服务在不同运行级的状态。      chkconfig --add name:增加一项新的服务。chkconfig确保每个运行级有一项启动(S)或者杀死(K)入口。如有缺少,则会从缺省的init脚本自动建立。      chkconfig --del name:删除服务,并把相关符号连接从/etc/rc[0-6].d删除。      chkconfig [--level levels] name <on|off|reset>:设置某一服务在指定的运行级是被启动,停止还是重置。例如,要在3,4,5运行级停止nfs服务,则命令如下:      chkconfig --level 345 nfs off运行级文件:      每个被chkconfig管理的服务需要在对应的init.d下的脚本加上两行或者更多行的注释。第一行告诉chkconfig缺省启动的运行级以及启动和停止的优先级。如果某服务缺省不在任何运行级启动,那么使用 - 代替运行级。第二行对服务进行描述,可以用/ 跨行注释。
    例如,random.init包含三行:
    # chkconfig: 2345 20 80
    # description: Saves and restores system entropy pool for /
    # higher quality random number generation.
    附加介绍一下Linux系统的运行级的概念:
          Linux中有多种运行级,常见的就是多用户的2,3,4,5 ,很多人知道5是运行X-Windows的级别,而0就是关机了。运行级的改变可以通过init命令来切换。例如,假设你要维护系统进入单用户状态,那么,可以使用init1来切换。在Linux的运行级的切换过程中,系统会自动寻找对应运行级的目录/etc/rc[0-6].d下的K和S开头的文件,按后面的数字顺序,执行这些脚本。对这些脚本的维护,是很繁琐的一件事情,Linux提供了chkconfig命令用来更新和查询不同运行级上的系统服务。
  8. 进程观察命令ps
    ps 显示进程
    ps -v  显示虚拟内存相关
    ps -a  显示所有用户进程
    ps -e  显示所有进程,忽略所有者
    ps -f  显示所有相关信息
    ps -u test48  显示test48用户进程
    ps -G grp1    显示grp1组进程
    常用命令为ps -ef
  9. linux启动顺序
    在系统启动的过程中,将会启动一个名为init的进程(它是系统中所有进程的祖先)。它所要完成的一部分工作就是看看需要启动哪些服务,应当缺省地进入哪一个运行级别。它通过查看/etc/inittab的配置文件来获得上述信息.
    initab在初始化时被读取,决定运行模式等,最早启动.
  10. ln命令
    使用方式 : ln [options] source dist,其中 option 的格式为
    说明 : Linux/Unix 档案系统中,有所谓的连结(link),我们可以将其视为档案的别名,而连结又可分为两种 : 硬连结(hard link)与软连结(symbolic link),硬连结的意思是一个档案可以有多个名称,而软连结的方式则是产生一个特殊的档案,该档案的内容是指向另一个档案的位置。硬连结是存在同一个档案系统中,而软连结却可以跨越不同的档案系统。
    ln source dist 是产生一个连结(dist)到 source,至于使用硬连结或软链结则由参数决定。
    不论是硬连结或软链结都不会将原本的档案复制一份,只会占用非常少量的磁碟空间。
    -f : 链结时先将与 dist 同档名的档案删除
    -d : 允许系统管理者硬链结自己的目录
    -i : 在删除与 dist 同档名的档案时先进行询问
    -n : 在进行软连结时,将 dist 视为一般的档案
    -s : 进行软链结(symbolic link)
    -v : 在连结之前显示其档名
    -b : 将在链结时会被覆写或删除的档案进行备份
    -S SUFFIX : 将备份的档案都加上 SUFFIX 的字尾
    -V METHOD : 指定备份的方式
    --help : 显示辅助说明
    --version : 显示版本
    示例:
    建立一个软连接,app是一个目录
    ln -s /home/dev/app appdir
    注意目录不能用硬连接,只能用软连接,所以建立一个目录的连接必须加入-s选项
  11. Linux下的网络配置常用命令介绍
    1、 ifconfig
    可以使用ifconfig命令来配置并查看网络接口的配置情况。
    例如:
    (1) 配置eth0的IP地址, 同时激活该设备。
    #ifconfig eth0 192.168.1.10 netmask 255.255.255.0 up
    (2) 配置eth0别名设备eth0:1的IP地址,并添加路由。
    #ifconfig eth0 192.168.1.3
    #route add –host 192.168.1.3 dev eth0:1
    (3) 激活设备。
    #ifconfig eth0 up
    (4) 禁用设备。
    #ifconfig eth0 down
    (5) 查看指定的网络接口的配置。
    #ifconfig eth0
    (6) 查看所有的网络接口配置。
    #ifconfig
    2、 route
    可以使用route命令来配置并查看内核路由表的配置情况。
    例如:
    (1) 添加到主机的路由。
    #route add –host 192.168.1.2 dev eth0:0
    #route add –host 10.20.30.148 gw 10.20.30.40
    (2) 添加到网络的路由。
    #route add –net 10.20.30.40 netmask 255.255.255.248 eth0
    #route add –net 10.20.30.48 netmask 255.255.255.248 gw 10.20.30.41
    #route add –net 192.168.1.0/24 eth1
    (3) 添加默认网关。
    #route add default gw 192.168.1.1
    (4) 查看内核路由表的配置。
    #route
    (5)删除路由。
    #route del –host 192.168.1.2 dev eth0:0
    #route del –host 10.20.30.148 gw 10.20.30.40
    #route del –net 10.20.30.40 netmask 255.255.255.248 eth0
    #route del –net 10.20.30.48 netmask 255.255.255.248 gw 10.20.30.41
    #route del –net 192.168.1.0/24 eth1
    #route del default gw 192.168.1.1
    对于1和2两点可使用下面的语句实现:
    Ifconfig eth0 172.16.19.71 netmask 255.255.255.0
    Route 0.0.0.0 gw 172.16.19.254
    Service network restart
    3、 traceroute
    可以使用traceroute命令显示数据包到达目的主机所经过的路由。
    例如:
    #traceroute www.sina.com.cn
    4、 ping
    可以使用ping 命令来测试网络的连通性。
    例如:
    #ping www.sina.com.cn
    #ping –c 4 192.168.1.12
    5、 netstat
    可以使用netstat命令来显示网络状态信息。
    例如:
    (1) 显示网络接口状态信息。
    #netstat –i
    (2) 显示所有监控中的服务器的Socket和正使用Socket的程序信息。
    #netstat –lpe
    (3) 显示内核路由表信息。
    #netstat –r
    #netstat –nr
    (4) 显示TCP/UDP传输协议的连接状态。
    #netstat –t
    #netstat –u
    6、 hostname
    可以使用hostname命令来更改主机名。例如;
    #hostname myhost
    7、 arp
    可以使用arp命令来配置并查看arp缓存。例如:
    (1) 查看arp缓存。
    #arp
    (2) 添加一个IP地址和MAC地址的对应记录。
    #arp –s 192.168.33.15 00:60:08:27:CE:B2
    (3) 删除一个IP地址和MAC地址的对应缓存记录。
    #arp –d192.168.33.15
  12. 格式化新添加的分区,并挂载到/home/目录
    mkfs -t ext3  /dev/sdb #格式化为ext3文件系统
    mount -t ext3 /dev/sdb /home/ora/install #将/dev/sdb分区以ext2格式加载到/home/ora/install目录
    如果需要在系统自动启动之后,自动加载/dev/sdb 到/home/ora/install目录,那么需要在/etc/fstab最后添加一行
    /dev/sdb                /home/ora/tbspace       ext3    defaults        1 1
  13. 查看所有分区,格式化分区,载入分区,自动载入分区
    df -k或者df -l可以查看当前已经载入的所有分区的使用情况
    fdisk -l可以查看所有的分区,包括没有载入的分区的详细信息
    *************************************************************************
    我的linux安装在虚拟机上,由于磁盘空间不够用,新添加了一块2G磁盘
    启动linux之后,用fdisk -l命令查看到该磁盘是/dev/sdc,接着
    用ext3格式格式话新添加的磁盘/dev/sdc
    mkfs -t ext3  /dev/sdc
    在/etc/fstab中添加自动加载到/home/dev/addspace选项
    mount -t ext3 /dev/sdc /home/dev/addspace
    df -k #用该命令能够查看新加入的磁盘块使用情况
    vi /etc/fstab
    在最后添加
    /dev/sdc                /home/dev/addspace       ext3    defaults        1 1
    这样新添加的磁盘/dev/sdc就能够在每次linux启动只好后,mount到/home/dev/addspace目录
    修改安装目录的权限chmod a+wrx /home/dev/addspace
    修改权限之后,这样root以外的用户都可以使用mount到addspace下的磁盘空间了
  14. 查看linux/unix操作系统版本信息
    uname -a
  15. 修改系统时间
    命令格式
    date [MMDDhhmm[[CC]YY][.ss]
    例如
    date 033001442008.00
    修改为2008年03月30日1点44分00秒
    如果用非root用户修改,那么不会影响到系统时间,只能影响到当前登录用户shell的时间
    只有用root用户修改系统时间,才会在整个系统生效,使别的登录用户也会采用root修改的最新时间
  16. 读取文本文件的最后一行,并删除
    filename=./test.txt
    tail -n 1 $filename       ##取最后一行
    ##删除最后一行
    line=`wc -l $filename`        
    line=` expr $line - 1 ` 
    head -n $line>$fileame.tmp
    mv -f $filename.tmp $filename
  17. 查找所有匹配字符的文件
    很多人以为用grep 就能查找出所有的匹配文件,但是如果要遍历所有的子目录,查找所有的匹配文件呢?
    这儿有一个示例命令,可以满足要求:
    find ./*  -name   "*.cpp"   |xargs   grep   "check_promIdRel"  
    上面命令就是,先用find遍历所有的子目录(./*) 查找匹配*.cpp的文件,然后再查找这些文件是否匹配check_promIdRel字符.