Skip to content

Instantly share code, notes, and snippets.

@millken
Created August 10, 2010 09:39
Show Gist options
  • Save millken/516992 to your computer and use it in GitHub Desktop.
Save millken/516992 to your computer and use it in GitHub Desktop.
修改时区
找到相应的时区文件 /usr/share/zoneinfo/Asia/Shanghai
替换当前的/etc/localtime。
修改/etc/sysconfig/clock文件的内容为:
ZONE="Asia/Shanghai"
UTC=false
ARC=false
修改日期
时间设定成2008年9月10日的命令如下:
#date -s 09/10/2008
修改时间
将系统时间设定成上午10点25分0秒的命令如下。
#date -s 10:25:00
同步biso时间
同步BIOS时钟,强制把系统时间写入CMOS,命令如下:
#clock -w
@millken
Copy link
Author

millken commented Aug 10, 2010

在电脑常用操作中,我们经常会用到CentOS常用命令。所以,我们对一些经常使用又很重要的CentOS常用命令进行了全面的整理。下面,就给大家介绍这些CentOS常用命令。
一:使用CentOS常用命令查看cpu
more /proc/cpuinfo | grep "model name"
grep "model name" /proc/cpuinfo
[root@localhost /]# grep "CPU" /proc/cpuinfo
model name : Intel(R) Pentium(R) Dual CPU E2180 @ 2.00GHz
model name : Intel(R) Pentium(R) Dual CPU E2180 @ 2.00GHz
如果觉得需要看的更加舒服
grep "model name" /proc/cpuinfo | cut -f2 -d:
二:使用CentOS常用命令查看内存
grep MemTotal /proc/meminfo grep MemTotal /proc/meminfo | cut -f2 -d: free -m |grep "Mem" | awk '{print $2}'
三:使用CentOS常用命令查看cpu是32位还是64位
查看CPU位数(32 or 64)
getconf LONG_BIT
四:使用CentOS常用命令查看当前linux的版本
more /etc/redhat-release
cat /etc/redhat-release
五:使用CentOS常用命令查看内核版本
uname -r
uname -a
六:使用CentOS常用命令查看当前时间
date上面已经介绍如何同步时间了
七:使用CentOS常用命令查看硬盘和分区
df -h
fdisk -l
也可以查看分区
du -sh
可以看到全部占用的空间
du /etc -sh
可以看到这个目录的大小
八:使用CentOS常用命令查看安装的软件包
查看系统安装的时候装的软件包
cat -n /root/install.log
more /root/install.log | wc -l
查看现在已经安装了那些软件包
rpm -qa
rpm -qa | wc -l
yum list installed | wc -l
不过很奇怪,我通过rpm,和yum这两种方式查询的安装软件包,数量并不一样。没有找到原因。
九:使用CentOS常用命令查看键盘布局
cat /etc/sysconfig/keyboard
cat /etc/sysconfig/keyboard | grep KEYTABLE | cut -f2 -d=
十:使用CentOS常用命令查看selinux情况
sestatus
sestatus | cut -f2 -d:
cat /etc/sysconfig/selinux
十一:使用CentOS常用命令查看ip,mac地址
在ifcfg-eth0 文件里你可以看到mac,网关等信息。 ifconfig cat /etc/sysconfig/network-scripts/ifcfg-eth0 | grep IPADDR cat /etc/sysconfig/network-scripts/ifcfg-eth0 | grep IPADDR | cut -f2 -d= ifconfig eth0 |grep "inet addr:" |awk '{print $2}'|cut -c 6- ifconfig | grep 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print $1}' 查看网关 cat /etc/sysconfig/network 查看dns cat /etc/resolv.conf 十二:使用CentOS常用命令查看默认语言
echo $LANG $LANGUAGE
cat /etc/sysconfig/i18n
十二:使用CentOS常用命令查看所属时区和是否使用UTC时间
cat /etc/sysconfig/clock
十三:使用CentOS常用命令查看主机名
hostname
cat /etc/sysconfig/network
修改主机名就是修改这个文件,同时最好也把host文件也修改。
十四:使用CentOS常用命令查看开机运行时间
uptime
09:44:45 up 67 days, 23:32, ...
看来刚才确实是网段的问题,我的机器还是67天前开机的。

系统资源使用情况

vmstat 1 -S m procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------ r b swpd free buff cache si so bi bo in cs us sy id wa st 0 0 0 233 199 778 0 0 4 25 1 1 3 0 96 0 0 0 0 0 233 199 778 0 0 0 0 1029 856 13 1 86 0 0
CentOS常用命令在我们的使用中,经常被使用。所以,我们对一些经常使用又很重要的CentOS常用命令进行了全面的整理。下面,就来介绍这些CentOS常用命令。
一:使用CentOS常用命令查看cpu

  1. more /proc/cpuinfo | grep "model name"
  2. grep "model name" /proc/cpuinfo
  3. [root@localhost /]# grep "CPU" /proc/cpuinfo
  4. model name : Intel(R) Pentium(R) Dual CPU E2180 @ 2.00GHz
  5. model name : Intel(R) Pentium(R) Dual CPU E2180 @ 2.00GHz
    如果觉得需要看的更加舒服
    grep "model name" /proc/cpuinfo | cut -f2 -d:
    二:使用CentOS常用命令查看内存
  6. grep MemTotal /proc/meminfo
  7. grep MemTotal /proc/meminfo | cut -f2 -d:
  8. free -m |grep "Mem" | awk '{print $2}'
    三:使用CentOS常用命令查看cpu是32位还是64位
    查看CPU位数(32 or 64)
    getconf LONG_BIT
    四:使用CentOS常用命令查看当前linux的版本
    more /etc/redhat-release
    cat /etc/redhat-release
    五:使用CentOS常用命令查看内核版本
    uname -r
    uname -a
    六:使用CentOS常用命令查看当前时间
    date上面已经介绍如何同步时间了
    七:使用CentOS常用命令查看硬盘和分区
    df -h
    fdisk -l
    也可以查看分区
    du -sh
    可以看到全部占用的空间
    du /etc -sh
    可以看到这个目录的大小
    八:使用CentOS常用命令查看安装的软件包
    查看系统安装的时候装的软件包
    cat -n /root/install.log
    more /root/install.log | wc -l
    查看现在已经安装了那些软件包
    rpm -qa
    rpm -qa | wc -l
    yum list installed | wc -l
    不过很奇怪,我通过rpm,和yum这两种方式查询的安装软件包,数量并不一样。没有找到原因。
    九:使用CentOS常用命令查看键盘布局
    cat /etc/sysconfig/keyboard
    cat /etc/sysconfig/keyboard | grep KEYTABLE | cut -f2 -d=
    十:使用CentOS常用命令查看selinux情况
    sestatus
    sestatus | cut -f2 -d:
    cat /etc/sysconfig/selinux
    十一:使用CentOS常用命令查看ip,mac地址
  9. 在ifcfg-eth0 文件里你可以看到mac,网关等信息。
  10. ifconfig
  11. cat /etc/sysconfig/network-scripts/ifcfg-eth0 | grep IPADDR
  12. cat /etc/sysconfig/network-scripts/ifcfg-eth0 | grep IPADDR | cut -f2 -d=
  13. ifconfig eth0 |grep "inet addr:" |awk '{print $2}'|cut -c 6-
  14. ifconfig | grep 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print $1}'
  15. 查看网关
  16. cat /etc/sysconfig/network
  17. 查看dns
  18. cat /etc/resolv.conf
    十二:使用CentOS常用命令查看默认语言
    echo $LANG $LANGUAGE
    cat /etc/sysconfig/i18n
    十三:使用CentOS常用命令查看所属时区和是否使用UTC时间
    cat /etc/sysconfig/clock
    十四:使用CentOS常用命令查看主机名
    hostname
    cat /etc/sysconfig/network
    修改主机名就是修改这个文件,同时最好也把host文件也修改。
    十五:使用CentOS常用命令查看开机运行时间
    uptime
    09:44:45 up 67 days, 23:32, ...
    看来刚才确实是网段的问题,我的机器还是67天前开机的。

系统资源使用情况

  1. vmstat 1 -S m
  2. procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
  3. r b swpd free buff cache si so bi bo in cs us sy id wa st
  4. 0 0 0 233 199 778 0 0 4 25 1 1 3 0 96 0 0
  5. 0 0 0 233 199 778 0 0 0 0 1029 856 13 1 86 0 0
  6. 对大家推荐很好使用的Linux CentOS系统,像让大家对Linux CentOS系统有所了解,然后对Linux CentOS系统全面讲解介绍,希望对大家有用Linux CentOS常用的命令.
    wget$ wget -r -np -nd http://example.com/packages/ 这条命令可以下载 http://example.com 网站上 packages 目录中的所有文件。Linux CentOS其中,-np 的作用是不遍历父目录,-nd 表示不在本机重新创建目录结构。
    $ wget -r -np -nd --accept=iso http://example.com/centos-5/i386/ 与上一条命令相似,Linux CentOS但多加了一个 --accept=iso 选项,这指示 wget 仅下载 i386 目录中所有扩展名为 iso 的文件。你也可以指定多个扩展名,Linux CentOS只需用逗号分隔即可。
    $ wget -i filename.txt 此命令常用于批量下载的情形,Linux CentOS把所有需要下载文件的地址放到 filename.txt 中,然后 wget 就会自动为你下载所有文件了。 Linux CentOS$ wget -c http://example.com/really-big-file.iso 这里所指定的 -c 选项的作用为断点续传。
    $ wget -m -k (-H) http://www.example.com/ 该命令可用来镜像一个网站,wget 将对链接进行转换。Linux CentOS如果网站中的图像是放在另外的站点,那么可以使用 -H 选项。
    VI 编辑命令命令模式
    移动光标
    [Ctrl] + [f] → 屏幕『向下』移动一页,相当于 [Page Down]按键
    [Ctrl] + [b] → 屏幕『向上』移动一页,相当于 [Page Up] 按键
    n → n 表示『数字』。按下数字后再按空白鍵,光标会向右移动这一行的 n 个字元
    0 → 数字『 0 』:移动到这一行的最前面字元处
    $ → 移动到这一行的最后面字元处
    G → 移动到这个文件的最后一行
    nG → n 为数字。移动到这个文件的第 n 行(可配合 :set nu)
    gg → 移动到这个文件的第一行,相当于 1G
    n → n 为数字。光标向下移动 n 行
    Linux CentOS查找与替换
    n → 『重复前一个查找的动作』
    N → 与 n 刚好相反,为『反向』进行前一个查找动作
    :n1,n2s/word1/word2/g → n1 与 n2 均为数字。在第 n1 与 n2 行之间查找 word1 字符串,并将该字符串替换为 word2。
    如:在 1 到 9 行之间查找 eric4ever 并替换为 ERIC4EVER 则:『:1,9s/eric4ever/ERIC4EVER/g』
    :1,$s/word1/word2/g → 从第一行到最后一行查找 word1 字符串,并将该字符串替换为 word2
    :1,$s/word1/word2/gc → 从第一行到最后一行查找 word1 字符串,并将该字符窗替换为 word2,替换前显示提示对话框是否确认替换
    Linux CentOS删除、复制与粘贴
    x, X → 在一行字当中,x 为向后刪除一个字元 (相当于 [del] 按键),
    X 为向前刪除一个字元(相当于 [backspace] 按键)
    dd → 刪除光标所在的那一整行
    ndd → n 为数字。刪除光标所在的向下 n 列
    yy → 复制光标所在的那一行
    nyy → n 为数字。复制光标所在的向下 n 列
    p, P → p 为将已复制的内容粘贴在光标下一行上,P 则为粘贴在光标的上一行
    u → 还原前一个动作
    [Ctrl]+r → 重做上一个动作
    . → 小数点,意思是重复前一个动作
    Linux CentOS编辑模式i, I → 插入:在目前的光标所在处插入输入的文字,已存在的文字会向后退; 其中, i 为『从目前光标所在处插入』, I 为『在目前所在行的第一個非空白字元处开始插入』a, A → a 为『从目前光标所在的下一个字元处开始插入』, A 为『从光标所在行的最后一个字元处开始插入』
    o, O → o 为『在目前光标所在的下一行处插入新的一行』, O 为『在目前光标所在处的上一行插入新的一行』
    r, R → r 为『取代光标所在的那一个字元』, R 为『一直取代光标所在的文字,直到按下 ESC 为止』
    Esc → 退出编辑模式,回到一般模式中
    Linux CentOS末行指令模式
    :w → 将编辑的文件写入到硬盘上
    :q → 退出 vi
    :set nu → 显示行号
    :set nonu → 取消显示行号
    Linux CentOSvim 块操作
    Ctrl+v 进入视图模式
    退出视图模式
    在Ctrl+v 后:
    + A在块的每行末尾添加
    I 插入
    y 块抽取
    p 块粘贴
    c 修改
    Linux centos已被广泛应用但是也在不断的更新,这里介绍Linux centos安装设置使用,帮助大家安装更新Linux centos系统手动配置Linux centos的IP地址
    今天在vmware server上装了个centos-4.7(免费的redhat,是小红帽的的克隆版本,跟小红帽的版本是对应的),其中ip安装时没设好,一般Linux centos的网卡IP地址是存放在文件中的,这个配置文件在/etc/sysconfig/network-scripts下,
    名称分别为ifcfg-eth0,ifcfg-eth1....如果你有一块网卡,就只有ifcfg-eth0一个文件,如果你有两块或者两块以上的网卡,就会有ifcfg-eth1、ifcfg-eth2等文件的出现。
    文件结构:
    DEVICE=eth0 //指出设备名称
    ONBOOT=yes//是否启动应用
    BOOTPROTO=static //启动类型 静态 (默认dhcp)
    IPADDR=192.168.0.77 //IP地址
    NETMASK=255.255.255.0//子网掩码
    GATEWAY=192.168.0.1 //网关
    步骤:
    1、vi /etc/sysconfig/network-scripts/ifcfg-teh0 (也可通过管理工具setup或netconfig命令设置)
    2、重新启动网络服务service network restart
    要想和主机连接:还需配置xp主机,在vmware上设置为 host-only模式,xp里修改vmnet1的IP地址为192.168.0.1, 修改Linux centos IP为192.168.0.77
    共享上网设置:xp里修改第一块虚拟网卡的网络属性为共享internet(属性->高级->钩选“允许其他网络用户通过此计算机的Internet连接来连接”) 会自动把vmnet1改为192.168.0.1,Linux centos就能上网了
    CentOS Vsftpd配置经过长时间的发展,这里我发表一下个人理解,下面就这就来讲术CentOS Vsftpd配置。调整CentOS Vsftpd配置文件:
    1.编辑CentOS Vsftpd配置文件前先备份
    [root@KcentOS5 ~]cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.backup
    2.编辑主CentOS Vsftpd配置文件Vsftpd.conf
    [root@KcentOS5 ~]vi /etc/vsftpd/vsftpd.conf
    这里我将原CentOS Vsftpd配置文件的修改完全记录,凡是修改的地方我都会保留注释原来的配置。其中加入我对每条配置项的认识,对于一些比较关键的配置项这里我做了我的观点,并且原本英语的说明我也不删除,供参考对比用。
    Example config file /etc/vsftpd/vsftpd.conf
    The default compiled in settings are fairly paranoid. This sample file
    loosens things up a bit, to make the ftp daemon more usable.
    Please see vsftpd.conf.5 for all compiled in defaults.
    READ THIS: This example file is NOT an exhaustive list of vsftpd options.
    Please read the vsftpd.conf.5 manual page to get a full idea of vsftpd's
    capabilities.
    Allow anonymous FTP? (Beware - allowed by default if you comment this out).
    anonymous_enable=YES
    anonymous_enable=NO
    设定不允许匿名访问
    Uncomment this to allow local users to log in.
    local_enable=YES设定本地用户可以访问。注意:主要是为虚拟宿主用户,如果该项目设定为NO那么所有虚拟用户将无法访问。
    Uncomment this to enable any form of FTP write command.
    write_enable=YES
    设定可以进行写操作。
    Default umask for local users is 077. You may wish to change this to 022,
    if your users expect that (022 is used by most other ftpd's)
    local_umask=022
    设定上传后文件的权限掩码。
    Uncomment this to allow the anonymous FTP user to upload files. This only
    has an effect if the above global write enable is activated. Also, you will
    obviously need to create a directory writable by the FTP user.
    anon_upload_enable=YES
    anon_upload_enable=NO
    禁止匿名用户上传。
    Uncomment this if you want the anonymous FTP user to be able to create
    new directories.
    anon_mkdir_write_enable=YES
    anon_mkdir_write_enable=NO
    禁止匿名用户建立目录。
    Activate directory messages - messages given to remote users when they
    go into a certain directory.
    dirmessage_enable=YES
    设定开启目录标语功能。
    Activate logging of uploads/downloads.
    xferlog_enable=YES
    设定开启日志记录功能。
    Make sure PORT transfer connections originate from port 20 (ftp-data).
    connect_from_port_20=YES
    设定端口20进行数据连接。
    If you want, you can arrange for uploaded anonymous files to be owned by
    a different user. Note! Using "root" for uploaded files is not
    recommended!
    chown_uploads=YES
    chown_uploads=NO
    设定禁止上传文件更改宿主。
    chown_username=whoever
    You may override where the log file goes if you like. The default is shown
    below.
    xferlog_file=/var/log/vsftpd.log
    设定CentOS Vsftpd配置的服务日志保存路径。注意,该文件默认不存在。必须要手动touch出来,并且由于这里更改了CentOS Vsftpd配置的服务宿主用户为手动建立的Vsftpd。必须注意给与该用户对日志的写入权限,否则服务将启动失败。
    If you want, you can have your log file in standard ftpd xferlog format
    xferlog_std_format=YES
    设定日志使用标准的记录格式。
    You may change the default value for timing out an idle session.
    idle_session_timeout=600
    设定空闲连接超时时间,这里使用默认。将具体数值留给每个具体用户具体指定,当然如果不指定的话,还是使用这里的默认值600,单位秒。
    You may change the default value for timing out a data connection.
    data_connection_timeout=120
    设定单次最大连续传输时间,这里使用默认。将具体数值留给每个具体用户具体指定,当然如果不指定的话,还是使用这里的默认值120,单位秒。
    It is recommended that you define on your system a unique user which the
    ftp server can use as a totally isolated and unprivileged user.
    nopriv_user=ftpsecure
    nopriv_user=vsftpd
    设定支撑CentOS Vsftpd服务的宿主用户为手动建立的Vsftpd用户。注意,一旦做出更改宿主用户后,必须注意一起与该服务相关的读写文件的读写赋权问题。比如日志文件就必须给与该用户写入权限等。
    Enable this and the server will recognise asynchronous ABOR requests. Not
    recommended for security (the code is non-trivial). Not enabling it,
    however, may confuse older FTP clients.
    async_abor_enable=YES
    设定支持异步传输功能。
    By default the server will pretend to allow ASCII mode but in fact ignore
    the request. Turn on the below options to have the server actually do ASCII
    mangling on files when in ASCII mode.
    Beware that on some FTP servers, ASCII support allows a denial of service
    attack (DoS) via the command "SIZE /big/file" in ASCII mode. vsftpd
    predicted this attack and has always been safe, reporting the size of the
    raw file.
    ASCII mangling is a horrible feature of the protocol.
    ascii_upload_enable=YES
    ascii_download_enable=YES
    设定支持ASCII模式的上传和下载功能。
    You may fully customise the login banner string:
    ftpd_banner=This Vsftp server supports virtual users ^_^
    设定CentOS Vsftpd配置的登陆标语。
    You may specify a file of disallowed anonymous e-mail addresses. Apparently
    useful for combatting certain DoS attacks.
    deny_email_enable=YES
    (default follows)
    banned_email_file=/etc/vsftpd/banned_emails
    You may specify an explicit list of local users to chroot() to their home
    directory. If chroot_local_user is YES, then this list becomes a list of
    users to NOT chroot().
    chroot_list_enable=YES
    chroot_list_enable=NO
    禁止用户登出自己的FTP主目录。
    (default follows)
    chroot_list_file=/etc/vsftpd/chroot_list
    You may activate the "-R" option to the builtin ls. This is disabled by
    default to avoid remote users being able to cause excessive I/O on large
    sites. However, some broken FTP clients such as "ncftp" and "mirror" assume
    the presence of the "-R" option, so there is a strong case for enabling it.
    ls_recurse_enable=YES
    ls_recurse_enable=NO
    禁止用户登陆FTP后使用"ls -R"的命令。该命令会对服务器性能造成巨大开销。如果该项被允许,那么挡多用户同时使用该命令时将会对该服
    务器造成威胁。
    When "listen" directive is enabled, vsftpd runs in standalone mode and
    listens on IPv4 sockets. This directive cannot be used in conjunction
    with the listen_ipv6 directive.
    listen=YES
    设定该CentOS Vsftpd服务工作在StandAlone模式下。顺便展开说明一下,所谓StandAlone模式就是该服务拥有自己的守护进程支持,在ps -A命令下我们将可用看到vsftpd的守护进程名。如果不想工作在StandAlone模式下,则可以选择SuperDaemon模式,在该模式下 vsftpd将没有自己的守护进程,而是由超级守护进程Xinetd全权代理,与此同时,Vsftp服务的许多功能将得不到实现。
    This directive enables listening on IPv6 sockets. To listen on IPv4 and IPv6
    sockets, you must run two copies of vsftpd whith two configuration files.
    Make sure, that one of the listen options is commented !!
    listen_ipv6=YES
    pam_service_name=vsftpd
    设定PAM服务下CentOS Vsftpd配置验证文件名。因此,PAM验证将参考/etc/pam.d/下的vsftpd文件配置。
    userlist_enable=YES
    设定userlist_file中的用户将不得使用FTP。
    tcp_wrappers=YES
    设定支持TCP Wrappers。
    KC: The following entries are added for supporting virtual ftp users.
    以下这些是关于Vsftpd虚拟用户支持的重要CentOS Vsftpd配置项目。默认Vsftpd.conf中不包含这些设定项目,需要自己手动添加配置。
    guest_enable=YES
    设定启用虚拟用户功能。
    guest_username=overlord
    指定虚拟用户的宿主用户。
    virtual_use_local_privs=YES
    设定虚拟用户的权限符合他们的宿主用户。
    user_config_dir=/etc/vsftpd/vconf
    设定虚拟用户个人Vsftp的配置文件存放路径。也就是说,这个被指定的目录里,将存放每个Vsftp虚拟用户个性的配置文件,一个需要注意的
    地方就是这些配置文件名必须和虚拟用户名相同。保存退出。
    3.建立CentOS Vsftpd配置的日志文件,并更该属主为Vsftpd的服务宿主用户:
    [root@KcentOS5 ~]touch /var/log/vsftpd.log
    [root@KcentOS5 ~]chown vsftpd.vsftpd /var/log/vsftpd.log
    4.建立虚拟用户CentOS Vsftpd配置文件存放路径:
    [root@KcentOS5 ~]mkdir /etc/vsftpd/vconf/
    CentOS vsftp已被广泛应用但是也在不断的更新,这里介绍CentOS vsftp安装设置使用,帮助大家安装更新CentOS vsftp系统。
    CentOS vsftp安装:
    1.安装CentOS Vsftpd服务相关部件:
    [root@KcentOS5 ~]# yum install vsftpd*
    2.确认安装PAM服务相关部件:
    [root@KcentOS5 ~]# yum install pam*
    开发包,其实不装也没有关系,主要的目的是确认PAM。
    3.安装DB4部件包:
    这里要特别安装一个db4的包,用来支持文件数据库。
    [root@KcentOS5 ~]# yum install db4*
    CentOS vsftp系统帐户
    1.建立CentOS vsftp服务的宿主用户:
    [root@CentOS5 /]#chmod 700 /home/vftpsite
    [root@KcentOS5 ~]# useradd vsftpd -s /sbin/nologin
    默认的Vsftpd的服务宿主用户是root,但是这不符合安全性的需要。这里建立名字为vsftpd的用户,用他来作为支持Vsftpd的服务宿主用户。由于该用户仅用来支持Vsftpd服务用,因此没有许可他登陆系统的必要,并设定他为不能登陆系统的用户。[root@CentOS5 /]#useradd –d /home/vftpsite –s /sbin/nologin vftpuser
    2.建立CentOS vsftp虚拟宿主用户:
    [root@KcentOS5 nowhere]# useradd overlord -s /sbin/nologin
    本篇主要是介绍Vsftp的虚拟用户,虚拟用户并不是系统用户,也就是说这些FTP的用户在系统中是不存在的。他们的总体权限其实是集中寄托在一个在系统中的某一个用户身上的,所谓Vsftpd的虚拟宿主用户,就是这样一个支持着所有虚拟用户的宿主用户。由于他支撑了FTP的所有虚拟的用户,那么他本身的权限将会影响着这些虚拟的用户,因此,处于安全性的考虑,也要非分注意对该用户的权限的控制,该用户也绝对没有登陆系统的必要,这里也设定他为不能登陆系统的用户。
    (这里插一句:原本在建立上面两个用户的时候,想连用户主路径也不打算给的。本来想加上 -d /home/nowhere 的,据man useradd手册上讲
    述:“ -d, --home HOME_DIR
    The new user will be created using HOME_DIR as the value for the
    user鈙 login directory. The default is to append the LOGIN name to
    BASE_DIR and use that as the login directory name. The directory
    HOME_DIR does not have to exist but will not be created if it is
    missing.
    使用-d参数指定用户的主目录,用户主目录并不是必须存在的。如果没有存在指定的目录的话,那么它将不会被建立”。结果我尝试 -d /home/nowhere 指定到一个并不存在的目录的时候,我KAO!竟然给我自己新建了一个= =#)
    【51CTO原创】FTP服务时互联网上比较古老的一种应用,至今Interner应用面非常广泛,但令管理员头痛不已的是其用户管理,既多且杂,如何解决这一问题呢?使用MySQL与ProFTP或VsFTP软件结合可以搭建一个高效、稳定且集中管理的FTP服务器。本来就来介绍一下如何搭建一个方便管理的基于MySQL数据库的FTP服务器。
    一、软件版本的选择:
    搭建基于数据库的FTP服务器首先要选择合适的软件。下面就是所选择软件的详细信息:
    ◆Linux版本RHEL5;
    ◆MySQL版本MySQL-standard-5.1.30-1.rhel5.src.rpm;
    ◆FTP服务器proftpd-1.3.2.tar.gz和vsftpd-2.2.1.tar.gz;
    ◆MySQL的PAM验证程序pam_mysql-0.8RC1.tar.gz;
    需要说明的是,RHEL5安装时自定义安装,“development tools”项必须选择,否则编译调试软件时需要的软件包需另行安装;其次,要确保所安装Linux系统时没有安装MySQL与FTP服务器等软件,如果有则先卸载;再次,ProFTPD与VsFTPD两者不要在同台计算机同时使用,这样会造成意想不到的问题,读者根据自己的需求和软件的具体功能选择其中之一。
    建立程序安装目录
    整个安装过程以root用户执行如下命令:
    #cd /soft/programe
    #mkdir mysq
    需要注意目录名称的大小写。
    #mkdir proftpd
    #mkdir pam_mods
    MySQL的安装目录为/soft/program/mysql,ProFTPD的安装目录为/soft/program/proftpd,pam_mysq1.so的安装目录为/soft/program/pam_mods,/storage是一个已经存在的目录,所有的FTP用户上传和下载文件都存放在这里。
    安装MySQL
    ◆ 增加一个管理MySQL的用户和组:
    #groupadd mysqlgrp
    #useradd -g mysqlgrp mysqladm
    #passwd mysqladm
    ◆ 切换到MySQL-stan-dard-5.1.30-1.rhel5.src.rpm文件所在的目录,执行以下步骤安装:
    #rpm-ivh MySQL-stan-dard-5.1.30-1.rhel5.src.rpm
    此条命令解压出mysql-5.1.30.tar.gz文件存放在以下的目录中。
    #cd /usr/src/redhat/SOURCE
    #tar zxvf mysqt-5.1.30.tar.gz
    #cd mysql-5.1.30
    #./configure Prefix=/soft/program/mysql --with-extra-charsets=all
    其中,“--prefix=/soft/program/mysql”参数是用来指定Mysql的安装目录,“--with-extra-charsets=all”是用来支持所有的字符集。
    #make
    #make install
    ◆ 初始化数据库
    #cd /soft/program/mysql/bin
    #./mysql_install_db
    ◆ 为了安全要修改数据库存放目录的属主信息和访问模式/soft/program/mysqll/var为数据库存放的缺省目录
    #cd /soft/program/mysql
    #chown –R mysqladm:mysqlgrp var
    #chmod -R go-wrx var
    ◆ 修改配置文件
    #cd /soft/program/mysql/share/mysql
    #cp my-small.cnf /etc/my.cnf
    #cd /etc
    在my.cnf文件中,增加如下内容:
    [mysql]
    user=mysqladm #表示用mysqladm 用户启动MySQL#
    default-character-set=utf8 #表示使用UTF-8字符集,此种字符集通用性较好,也很好的支持中文,当然也可以直接使用GBK。
    [clent]
    Default-character-set=utf8
    ◆ 启动
    启动方式有两种,一种是手工启动,一种是自动启动,其中手工启动的操作如下:
    #cd /soft/program/mysql/bin
    #./mysqld_safe&
    自动启动则需要在/etc/rc.d/rc/local中加入以下的内容,开机自动启动MySQL数据库:
    If [-x /soft/program/mysql/bin/mysqld_safe]; then
    install_path_name /bin/mysqld_safe&
    fi
    ◆ 修改管理员密码
    使用如下命令修改数据库密码:
    #cd /soft/program/mysql/bin
    #./mysqladmin -h localhost -u root password '123456'
    上述命令的意思是本机上(-h host)使用的管理数据库的缺省管理账号root。需要注意的事,此root并非Linux系统中的root用户,密码设置为123456.

安装ProFTPD
◆切换到proftpd-1.3.2.tar.gz文件所在的目录,执行以下步骤安装:

tar zxvf proftpd-1.3.2.tar.gz

cd proftpd-1.3.2

./configure--prefix=/soft/program/proftpd --with-modules=mod_sql:mod_sql_mysql:mod_quotatab:mod_quotatab_sql

此参数将支持MySQL和Quota模块添加进来。
--with-includes=/soft/program/mysql/include/mysql
上述参数指定MySQL中include的目录路径。
--with-libraries=/soft/program/mysql/lib/mysql
此参数指定MySQL中lib的目录路径。

make

make install

使用如下命令建立一个用于管理ProFTPD的Linux系统账号和组。

groupadd -g 2009 ftpgroup

useradd -u 2009 –s /bin/false -d /storage -g ftpgroup ftpuser

chown -R ftpuser.ftpgroup /storage

chmod –R go-wrx- /storage

chmod –R u+wrx /storage

简单修改ProFTPD配置文件,使之正常运行:

cd /soft/program/proftpd/etc

用编辑器打开proftpd.conf,修改一下的内容:

Set the user and group under which the server will run.

User ftpuser
Group ftpgroup
◆启动ProFTPD
启动Proftpd同样有两种方法,即手工启动和自动启动,其中手工启动操作如下:

cd /soft/program/proftpd/sbin/

./proftpd

此时一个基本的FTP服务器已经搭建成,可以进行测试了。需要注意的是,启动时如果出现具有以下信息的错误:
error while loading shared libraries:libmysqlclient.so.15:cannot open shared object file:No such file or directory
通常的解决办法如下:

cd /etc

用文本工具打开ld.so.conf,添加以下的内容/soft/program/mysql/lib/mysql

ldconflg

更新ld.so cache file。
要让ProFTPD自动启动在/etc/rc.d/rc.local中加入以下的内容,开机即可自启动ProFTPD:
/soft/program/proftpd/sbin/proftpd
二、MySQL与ProFTPD组合
在MySQL 中建立一个名为ftp的数据库,在该数据库中建立以下的四个表:
◆登录FTP服务器的用户表ftpusers,字段信息如下所示,这些字段是必需的,其他字段根据自己的需要添加,参考字段如下:
'userid' text NOT NULL #用户登录账号#
'passwd' text NOT NULL #用户登录密码#
'uid' int(11)NOT NULL default '2009', #与Linux系统账号ftpuser的UID号一致#
'gid' int(11)NOT NULL default '2009', #与Linux系统组#
ftpgroup 的GID号一致'homedir' text,用户文件上传下载目录,如账号名为abc,此处就填写/storage/abc,'shell' text default ,'/sbin/nologin'这个是用来指定用户是否能登录Linux系统,这里默认的是不能登录。
◆FTP用户归属表ftpgroups,字段信息如下所示,关于建立该组的目的将在quotalimits表中说明
'groupname' text NOT NULL #组名#
'gid' smallint(6) NOT NULL default'0',#组的id号#
'memembers' text NOT NULL #成员#
◆用于设置磁盘限额相关信息的表quotalimits和quotatallies,这两个表的字段请不要改动,它是与ProFTPD的配置文件紧密联系,quotalimits表的字段信息如下:
'name' varchar(30)default NULL,
'quota_type' enum('user','group','class','all')NOT NULL default 'user',
'per_session' enum('false','true')NOT NULL default'false',
'limit_type' enum('soft','hard')NOT NULL default'soft',
'bytes_in_avail'float NOT NULL default'0',
'bytes_out_avail'float NOT NULL default'0',
'bytes_xfer_avail'float NOT NULL default'0',
'files_in_avail'int(10) unsigned NOT NULL default'0',
'files_out_avail'int(10)unsigned NOT NULL default'0',
'files_xfer_avail'int(10)unsigned NOT NULL default'0'
需要注意的是,name应该这样理解,既能表示单个用户,也能表示用户组名。如果在quota_type(限额类型)中使用group来认证的话,那就得在这里设置组名,这样整组都具有统一的磁盘限额的特性,当然要在ftpgroups表中插入组记录,并且在member字段中得把用户一个一个的列进去。默认值可以为空NULL。如果为空,则针对所在有quota_type中设置的类型,比如在quota_type中设置为user,就是针对所有ftpusers中的用户起作用,如果是group名,也是对ftpgroups所有组作用。quota_type磁盘限额类型,可以设置为用户,也可以设置为用户组group。如果name写的是用户组,这里就得设置为group来认定。默认为user认证。per_session默认为false.limit_type默认为soft。Bytes_in_avail用户占用空间大小,也就是FTP用户空间容量,单位是byte,默认为0,0是不受限制,以下同理。bytes_out_avail所有下载文件的总和,默认为0。
bytes_xfer_avail一个用户上传下载流量总和,默认为0。files_in_avail限制上传文件总和,默认为0。files_out_avail限制下载文件个数总计,默认为0。files_xfer_avail允许下载和上传的文件总和,默认为0。Quotatallies表的字段信息,各字段信息参照quotalimits。配置参考参数如下:
name VARCHAR(30)NOT NULL,
quota_type ENUM("user","group","class","all")NOT NULL,
bytes_in_used FLOAT NOT NULL,
bytes_out_used FLOAT NOT NULL,
bytes_xfer_used FLOAT NOT NULL,
files_in_used INT UNSIGNED NOT NULL,
files_out_used INT UNSIGNED NOT NULL,
files_xfer_used INT UNSIGNED NOT NULL
此外,在proftpd.conf文件中增加以下的内容:
◆数据库连接的信息,ftp是数据库名,localhost是主机名,root是连接数据库的用户名,123456是密码。
SQLConnectlnfoftp@localhost root 123456
◆数据库认证的类型,Plaintext表示明文认证方式
SQLAuthTYpes Backend Plaintext
◆指定用来做用户认证的表的有关信息
SALUserlnfo ftpusers userid passwd uid gid homedir shell
SQLGrouplnfo ftpgroups groupname gid members
◆校验数据表
SQLAuthenticate users groups usersetfast groupsetfast
◆如果home目录不存在,则系统会根据ftpusers表中的home字段。
新建一个目录:
SQLHomedirOnDemand on
◆打开磁盘限额引擎
QuotaEngine on
◆设置磁盘限额
QuotaDirectoryTally on
◆设置磁盘容量显示时的单位
QuotaDisplayUnits Mb
◆设置磁盘限额日志文件
QuotaLog”/usr/local/proftpd/var/quota”
◆显示磁盘限额信息
ftp登录后可执行quote site quota命令查看当前磁盘使用情况:
QuotaShowQuotas on
◆设置磁盘限额日志文件
QuotaLog”/var/log/quota”
◆指定磁盘限额模块使用的数据库信息
SQLNamedQuer get-quota-limit SELECT "name,quota_type,bytes_in_avail,bytes_out_avail,bytes_xfer_avail,files_in_avail,files_out_avail,files_xfer_avail FROM quotalimits WHERE name='%{0}'AND quota_type='%{1}'"
SQLNamedQuery get-quota-tally SELECT"name,quota_type,bytes_in_used,bytes_out_used,bytes_xfer_used,files_in_used,files_out_used,filed_xfer_used,FROM quotatallies WHERE name='%{0}'AND quota_type ='%{1}"
SQLNamedQuery update-quota-tally UPDATE"bytes_in_used =bytes_in_used+%{0},bytes_out_used=bytes_out_used+%{1},bytes_xfer_used=bytes_xfer_used+%{2},files_in_used=files_in_used+%{3},files_out_used=files_out_used+%{4},files_xfer_used =files_xfer_used+%{5} WHERE name='%{6}'AND quota_type = '%{7}'" quotatallies
SQLNamedQuery insert-quota-tally INSERT"%{0},%{1},%{2},%{3},%{4},%{5},%{6},%{7}"quotatallies
QuotaLimitTable sql:/get-quota-limit
QuotaTallyTable sql:/get-quota-tally/update-quota-tally/insert-quota-tally
另外,读者还可以在proftpd.conf中添加一些有关超时、限制连接次数、加快连接速度、支持断点传输及安全传输等内容。
anon_other_write_enable=YES
ascll_upload_enable=YES
ascll_download_enable=YES
VsFTPD配置文件中还可以进行更多的设置,如磁盘配额、虚拟用户个人目录的建立、性能与负载控制、FTP被动模式断口设置、安全设置等,读者根据自己的需要进一步的完善。
◆编辑文件
修改/etc/pam.d/ftp中去掉其他的内容,添加以下的内容:

auth

auth required/soft/program/pam_mods/pam_mysql.so
user=ftpuser passwd=6789host=localhost db=ftp
table=ftpusers usercolumn=userid passwdcolumn=passwd crypt=0

account

Account required/soft/program/pam_mods/pam_mysql.so
User=ftpuser passwd=6789 host=localhost db=ftp table=ftpusers usercolumn=userid passwdcolumn=passwd crypt=0
涉及到的参数,只要对应前面数据库的设置就可以明白它们的含义。其中:crypt=0,口令以明文方式(不加密)保存在数据库中,crypt=1,口令使用Unix系统的DES加密方式加密后保存在数据库中;crypt=2,口令经过MySQL的password()函数加密后保存。FTP数据库中ftpusers表的授权用户ftpusers和密码必须正确设置。
◆开机自启动VsFTPD
请将vsftpd-2.2.1/xinetd.d/vsftpd文件制到/etc/xinetd.d/中(如果该目录中没有该文件)。此外,还需设置vsftpd.conf中listen和Tcp_Wrappers参数,将其都设置为NO,最后,用ntsysv命令,选中Vsftpd守护进程即可。
通过上面的知识,结合Apache、PHP等软件可以开发许多功能,如自动申请主页空间等,而且使用phpMyAdmin可以以Web方式管理MySQL,很容易的添加和删除用户,这样FTP用户管理就轻松多了。

@millken
Copy link
Author

millken commented Sep 28, 2010

CentOS 和用户管理有关的常用命令

1) 查看可以登录系统的用户命令:
cat /etc/passwd | grep -v /sbin/nologin | cut -d : -f 1

2) 查看用户的操作
root用户输入w即可查看用户的所有操作。

3) 查看某一个用户
w simeon

4) 查看登录用户
who

5) 系统中有哪些用户
cut -d : -f 1 /etc/passwd

6) 查看登陆用户历史
last
执行last命令其实是显示/var/log/目录下的wtmp文件内容。 

@millken
Copy link
Author

millken commented Sep 28, 2010

Linux 系统管理员常用命令

  一:使用CentOS常用命令查看cpu

  more /proc/cpuinfo | grep "model name"

  grep "model name" /proc/cpuinfo

  [root@localhost /]# grep "CPU" /proc/cpuinfo

  model name : Intel(R) Pentium(R) Dual CPU E2180 @ 2.00GHz

  model name : Intel(R) Pentium(R) Dual CPU E2180 @ 2.00GHz

  如果觉得需要看的更加舒服

  grep "model name" /proc/cpuinfo | cut -f2 -d:

  二:查询内存使用情况
  # watch -n 1 cat /proc/meminfo


  三:使用CentOS常用命令查看cpu是32位还是64位

  查看CPU位数(32 or 64)

  getconf LONG_BIT

  四:使用CentOS常用命令查看当前linux的版本

  more /etc/redhat-release

  cat /etc/redhat-release

  五:使用CentOS常用命令查看内核版本

  uname -r

  uname -a

  六:使用CentOS常用命令查看当前时间

  date上面已经介绍如何同步时间了

  七:使用CentOS常用命令查看硬盘和分区

  df -h

  fdisk -l

  也可以查看分区

  du -sh

  可以看到全部占用的空间

  du /etc -sh

  可以看到这个目录的大小

  八:使用CentOS常用命令查看安装的软件包

  查看系统安装的时候装的软件包

  cat -n /root/install.log

  more /root/install.log | wc -l

  查看现在已经安装了那些软件包

  rpm -qa

  rpm -qa | wc -l

  yum list installed | wc -l

  不过很奇怪,我通过rpm,和yum这两种方式查询的安装软件包,数量并不一样。没有找到原因。

  九:使用CentOS常用命令查看键盘布局

  cat /etc/sysconfig/keyboard

  cat /etc/sysconfig/keyboard | grep KEYTABLE | cut -f2 -d=

  十:使用CentOS常用命令查看selinux情况

  sestatus

  sestatus | cut -f2 -d:

  cat /etc/sysconfig/selinux

  十一:使用CentOS常用命令查看ip,mac地址

  在ifcfg-eth0 文件里你可以看到mac,网关等信息。 ifconfig cat /etc/sysconfig/network-scripts/ifcfg-eth0 | grep IPADDR cat /etc/sysconfig/network-scripts/ifcfg-eth0 | grep IPADDR | cut -f2 -d= ifconfig eth0 |grep "inet addr:" |awk '{print $2}'|cut -c 6- ifconfig | grep 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print $1}' 查看网关 cat /etc/sysconfig/network 查看dns cat /etc/resolv.conf 十二:使用CentOS常用命令查看默认语言

  echo $LANG $LANGUAGE

  cat /etc/sysconfig/i18n

  十二:使用CentOS常用命令查看所属时区和是否使用UTC时间

  cat /etc/sysconfig/clock

  十三:使用CentOS常用命令查看主机名

  hostname

  cat /etc/sysconfig/network

  修改主机名就是修改这个文件,同时最好也把host文件也修改。

  十四:使用CentOS常用命令查看开机运行时间

  uptime

  09:44:45 up 67 days, 23:32, ...

  十五: CentOS卸载已经安装的程序
  # yum -y remove mysql // 卸载MySQL
  # yum -y remove httpd // 卸载Apache
  # yum -y remove httpd php php-gd mysql //卸载多个非类似软件时 

@millken
Copy link
Author

millken commented Sep 28, 2010

安装方法,VPS必须是一个"干净"的centos5系统,SSH登录VPS后,依次执行以下命令:

wget www.acyoo.com/wp-content/uploads/2010/06/lamp.tar.gz
tar zxvf lamp.tar.gz
cd lamp
chmod +x install.sh
./install.sh 

可以一条一条命令输入,也可以一次全部复制然后粘贴进去,但一次性复制的话,要注意结尾不要有多余的空行和回车

输入之后,稍等一下会让你设置域名、mysql密码、ftp密码,设置完成后开始安装,大概需要几十分钟,你可以去睡一觉……

安装完成后输入网址可查看php信息

php探针地址:http://你的域名/phpinfo.php"
phpMyAdmin地址: http://你的域名/phpmyadmin"
安装路径:
mysql dir: /usr/local/mysql
php dir: /usr/local/php
apache dir: /usr/local/apache
web dir: /home/www/default
ftp username: www
mysql username: root
安全问题: 请登录 http://你的域名/phpmyadmin 删除所有没有密码的帐号!

添加虚拟主机

/usr/local/apache/conf/extra/httpd-vhosts.conf

在后面加上

<VirtualHost *:80>
ServerAdmin test@test.com
DocumentRoot /home/www/blog
ServerName www.acyooc.om
# ServerAlias lamp.org
ErrorLog /home/logs/web_www.acyoo.com_error.log
CustomLog "|/usr/local/sbin/cronolog /home/logs/web_www.acyoo.com_access_%Y%m%d.log" custom1
</VirtualHost>
<Directory "/home/www/blog">
Options FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
php_admin_flag register_globals Off
php_admin_value open_basedir "/tmp:/home/www/blog"
</Directory>

绑定目录改成自已的目录

重启Apache

/usr/local/apache/bin/apachectl restart

@millken
Copy link
Author

millken commented Feb 12, 2011

1.1 ls

语法: ls [-RadCxmlnogrtucpFbqisf1] 目录或文件......: ls 命令列出指定目录下的文件,缺省目录为当前目录 ./,缺省输出顺序为纵向按字符顺序排列。
-R 递归地列出每个子目录的内容
-a 列出所有文件,包括第一个字符为“.”的隐藏文件
-d 若后面参数是目录,则只列出目录名而不列出目录内容,常与-l选项连
用以显示目录状态。
-C 输出时多列显示
-x 横向按字符顺序排列
-m 输出按流式格式横向排列,文件名之间用逗号(,)分隔
-l 长列表输出,显示文件详细信息,每行一个文件,从左至右依次是:
文件存取模式 链接数 文件主 文件组 文件字节数 上次修改时间
其中文件存取模式用10个字母表示,从左至右的意义如下:
第一个字母表示文件种类,可以是以下几种情况:
d 为目录文件
l 为链接
b 为块文件
c 为字符型文件
p 为命名管道(FIFO)

  • 为普通文件
    后面9个字母分别表示文件主、同组用户、其他用户对文件的权力,用r表示可读,w 表示可写,x 表示可执行。如果是设备文件,则在文件字节数处显示:主设备 从设备。
    -n 与-l选项相同,只是文件主用数字(即UID)显示,文件组用数字
    (即GID)表示
    -o 与-l选项相同,只是不显示文件组
    -g 与-l选项相同,只是不显示文件主
    -r 逆序排列
    -t 按时间顺序排列而非按名字
    -u 显示时间时使用上次访问时间而非上次修改时间
    -c 显示时间时使用上次修改i节点时间而非上次修改时间
    -p 若所列文件是目录文件,则在其后显示斜杠(/)
    -F 在目录文件后加’/’,在可执行文件后加’*’
    -b 文件名中若有非打印字符,则用八进制显示该字符
    -q 文件名中的打印字符用’?’表示
    -i 显示节点号
    -s 显示文件长度时使用块长度而非字节长度
    -f 将后面的参数解释为目录并列出其中的每一项
    -1 每行仅列一项
    例子:
    ls 列出当前目录下的文件
    ls -al /bin 以长列表的形式列出目录 /bin 下的所有文件,包括隐藏文件

1.2 pwd

说明: 本命令用于显示当前的工作目录
例子:
pwd 显示出当前的工作目录

1.3 cd

语法: cd 目录:本命令用于改变当前的工作目录,无参数时使用环境变量$HOME 作为其参数,$HOME 一般为注册时进入的路径。
例子
cd 回到注册进入时的目录
cd /tmp 进入 /tmp 目录
cd ../ 进入上级目录
1.4 mkdir

语法: mkdir [-m 模式] [-p] 目录名

-m 按指定存取模式建立目录
-p 建立目录时建立其所有不存在的父目录
例子:
mkdir tmp 在当前目录下建立子目录 tmp
mkdir -m 777 /tmp/abc 用所有用户可读可写可执行的存取模式
建立目录 /tmp/aaa ,存取模式参看命令 chmod
mkdir -p /tmp/a/b/c 建立目录 /tmp/a/b/c ,若不存在目录 /tmp/a
及/tmp/a/b 则建立之

1.5 rmdir

语法: rmdir [-p] [-s] 目录名

-p 删除所有已经为空的父目录
-s 当使用-p 选项时,出现错误不提示
例子:
rmdir /tmp/abc 删除目录 /tmp/abc
rmdir -p /tmp/a/b/c 删除目录 /tmp/a/b/c ,若目录 /tmp/a /b
及/tmp/a 空,则删除

1.6 cat

语法: cat [-u] [-s] [-v[-t] [-e]] 文件…

-u 无缓冲的输出(缺省为有缓冲输出)
-s 对不存在的文件不作提示
-v 显示出文件中的非打印字符,控制字符显示成^n ,n为八进制数字,
其他非打印字符显示成M-x , x 为该字符低7位的8进制数值
-t 在使用-v 选项时,将制表符(tab) 显示成 ^I,将换页符
(formfeed)显示成 ^ L
-e 在使用-v 选项时,在每一行的行尾显示 $
例子:
cat file 显示文件
cat -s -v -e file1 file2 file3 逐个显示文件 file1 file2 file3

1.7 head

语法: head [-n] 文件 ...: 将文件的头n 行显示输出,缺省值为 10 行,显示多个文件时,在每个文件的前面加上 ==> 文件名 < ==
例子
head -9999 file1 file2 显示文件 file1 和 file2 的头 9999 行

1.8 more

语法: more [-cdflrsuw] [- 行数] [+ 行数] [+ / 模式 ] 文件 ... : 将文件显示在终端上,每次一屏,在左下部显示 --more--,若是从文件读出而非从管道,则在后面显示百分比,表示已显示的部分,按回车键则上滚一行,按空格键则上滚一屏,未显示完时可以使用more 命令中的子命令。
-c 显示文件之前先清屏
-d 当输错命令时显示错误信息而不是响铃(bell)
-f 不折叠显示长的行
-l 不将分页控制符(CTRL D)当作页结束
-r 一般情况下,more 不显示控制符,本选项使more 显示控制符,
例如,将 (CTRL C) 显示成 ^ C
-s 将多个空行转换成一个空行显示
-u 禁止产生下划线序列
-w 一般情况下 more 显示完后立即推出,本选项在显示完后作提
示,敲任意键后推出
-n 行数 指定每屏显示的行数

  • 行号 从指定行号开始显示
    +/模式 在文件中搜索指定模式,从模式出现行的上两行开始显示 文件未显示完时,可以使用more 命令中的子命令,命令中除了! 和 / 以外均不回显,也不用敲回车,当命令破坏 more 提示行时,可用退格键恢复提示行。在以下子命令操作中,i 表示数字,缺省值为 1。
    i 空格 上滚一屏多 i 行
    i 回车 上滚 i 行
    i CTRL+D i 缺省时上滚 11 行,否则上滚 i 行
    id i 缺省时上滚 11 行,否则上滚 i 行
    iz i 缺省时上滚一屏,否则定义每屏为 i 行
    is 跳过 i 行后显示一屏
    if 跳过 i 屏后显示一屏
    i CTRL+B 跳回 i 屏后显示一屏
    b 跳回 一屏后显示一屏
    q 或 Q 推出 more
    = 显示当前行号
    v 从当前行开始编辑当前文件编辑器由环境变量
    $EDITOR定义
    h 显示帮助信息
    i / 模式 向前搜索,直至模式的第 i 次出现 , 从该行的上 两行开始显示一屏
    in 向前搜索,直至上一模式的第 i 次出现 , 从该行 的上两行开始显示一屏
    单引号 回到上次搜索的出发点,若无搜索则回到开始位置
    ! 命令 激活一个sh 去执行指定的命令
    i : n 跳到后面第 i 个文件,若不存在则跳到最后一个文件
    :f 显示当前文件名和行号
    :q 或 :Q 推出 more
    . (点) 重复上次命令
    例子:
    more -c +50 file 清屏后,从第50行开始显示文件 file
    more -s -w file1 file2 file3 显示文件 file1 file2 file3

1.9 cp

语法: cp [ -p ] [ -r ] 文件 1 [ 文件 2 ...] 目标
说明: 将文件1(文件2 ...)拷贝到目标上,目标不能与文件同名, 若目标是文件名,则拷贝的文件只能有一个,若目标是目录, 则拷贝的文件可以有多个,若目标文件不存在,则建立这个文件,若存在,则覆盖其以前的内容,若目标是目录,则将文件拷贝到这个目录下。

  • i 在覆盖已存在文件时作提示,若回答 y 则覆盖,其他则中止
  • p 不仅拷贝文件内容,还有修改时间,存取模式,存取控制表, 但不拷贝
    UID 及 GID
  • r 若文件名为目录,则拷贝目录下所有文件及子目录和它们的文件,此时
    目标必须为目录
    例子:
    cp file1 file2 将文件 file1 拷贝到文件 file2
    cp file1 file2 /tmp 将文件 file1 和文件 file2 拷贝到目录 /tmp 下
    cp -r /tmp /mytmp 将目录 /tmp 下所有文件及其子目录拷贝至目录/mytmp

1.10 mv

语法: mv [-f] [-i] 文件1 [文件2...] 目标

  • i 在覆盖已存在文件时作提示,若回答 y 则覆盖,其他则中止
  • f 覆盖前不作任何提示
    例子:
    mv file1 file2 将文件 file1 改名为 file2
    mv file1 file2 /tmp 将文件 file1 和文件 file2 移动到目录 /tmp 下

1.11 rm

语法: rm [-f] [-i] 文件...
或 rm -r [-f] [-i] 目录名... [文件]

  • f 删除文件时不作提示
  • r 递归地删除目录及其所有子目录
  • i 删除文件之前先作提示
    例子:
    rm file1 删除文件 file1
    rm -i /tmp/* 删除目录 /tmp 下的所有文件
    rm -r /mytmp 递归地删除目录 /mytmp

1.12 chmod

语法: chmod [-R] 模式 文件...
或 chmod [ugoa] {+|-|=} [rwxst] 文件...

chmod nnnn file , n为0-7的数字,意义如下:
4000 运行时可改变UID
2000 运行时可改变GID
1000 置粘着位
0400 文件主可读
0200 文件主可写
0100 文件主可执行
0040 同组用户可读
0020 同组用户可写
0010 同组用户可执行
0004 其他用户可读
0002 其他用户可写
0001 其他用户可执行
nnnn 就是上列数字相加得到的,例如 chmod 0777 file 是指将文件 file 存取权限置为所有用户可读可写可执行。
-R 递归地改变所有子目录下所有文件的存取模式
u 文件主
g 同组用户
o 其他用户
a 所有用户

  • 增加后列权限
  • 取消后列权限
    = 置成后列权限
    r 可读
    w 可写
    x 可执行
    s 运行时可置UID
    t 运行时可置GID
    例子:
    chmod 0666 file1 file2 将文件 file1 及 file2 置为所有用户可读可写
    chmod u+x file 对文件 file 增加文件主可执行权限
    chmod o-rwx 对文件file 取消其他用户的所有权限

1.13 chown

语法: chown [-R] 文件主 文件...
说明: 文件的UID表示文件的文件主,文件主可用数字表示, 也可用一个有效的用户名表示,此命令改变一个文件的UID,仅当此文件的文件主或超级用户可使用。
-R 递归地改变所有子目录下所有文件的存取模式
例子:
chown mary file 将文件 file 的文件主改为 mary
chown 150 file 将文件 file 的UID改为150

1.14 chgrp

语法: chgrp [-R] 文件组 文件...
说明: 文件的GID表示文件的文件组,文件组可用数字表示, 也可用一个有效的组名表示,此命令改变一个文件的GID,可参看chown。
-R 递归地改变所有子目录下所有文件的存取模式
例子:
chgrp group file 将文件 file 的文件组改为 group

1.15 cmp

语法: cmp [-l] [-s] 文件1 文件2
说明: 比较两个文件,若文件1 为 - ,则使用标准输入, 两个文件相同则无提示,不同则显示出现第一个不同时的字符数和行号。
-l 显示每个不同处的字节数(10进制)和不同的字节(8进制)
-s 不作任何提示,只返回码
例子:
cmp file1 file2 比较文件 file1 和 file2
cmp -l file1 file2 比较文件file1 和 file2 的每处不同

1.16 diff

语法: diff [-be] 文件1 文件2

-b 将一串空格或TAB转换成一个空格或TAB
-e 生成一个编辑角本,作为ex或ed的输入可将文件1转换成文件2
例子:
diff file1 file2
diff -b file1 file2
diff -e file1 file2 >edscript

1.17 wc

语法: wc [-lwc] 文件…

-l 只统计行数
-w 只统计字数
-c 只统计字符数
例子:
wc -l file1 file2 统计文件file1和file2 的行数

1.18 split

语法: split [-n] 文件 [名字]: split 将指定大文件分解为若干个小文件,每个文件长度为n行(n 缺省时为1000),第一个小文件名为指定的名字后跟aa,直至zz,名字缺省值为x,若未指定大文件名,则使用标准输入
例子:
split -500 largefile little
将文件largefile 每500行写入一个文件,第一个文件名为littleaa

1.19 touch

语法: touch [-amc] [mmddhhmm[yy]] 文件…

-a 只改变访问时间
-m 只改变修改时间
-c 若文件不存在,不创建它且不作提示
mmddhhmm[yy] 两位表示 月日时分[年]
例子:
touch file
更新文件file的时间
touch 0701000097 HongKong
将文件HongKong的时间改为97年7月1日0时0分

1.20 file

语法: file [-f 文件名文件] 文件…
说明: file 对指定文件进行测试,尽量猜测出文件类型并显示出来
-f 文件名文件 文件名文件是一个包含了文件名的文本文件, -f 选项测试
文件名文件中所列出的文件
例子:
file * 显示当前目录下所有文件的类型

1.21 pack

语法: pack 文件…
说明: pack 将指定文件转储为压缩格式,文件名后加 .z , 文件存取模式,访问时间,修改时间等均不变
例子:
pack largefile 将largefile 压缩后转储为largefile.z

1.22 pcat 显示压缩文件

语法: pcat 文件…
说明: pcat 显示输出压缩文件

例子:
pcat largefile.z 显示压缩前的largefile
pcat largefile.z > oldfile 显示压缩前的laregfile,并将其重定向到
文件oldfile中

1.23 unpack

语法: unpack 文件…

例子:
unpack largefile.z 将压缩文件largefile.z解压后转储为largefile

1.24 find

语法: find 路径名… 表达式
说明: find 命令递归地遍历指定路径下的每个文件和子目录,看该文件是否能使表达式值为真,以下 n 代表一个十进制整数,+n 代表打印 n , -n 代表小于 n ,下面是合法表达式说明:
-name 模式 文件名与模式匹配则为真,(\ 为转意符)
-perm [-]八进制数 文件存取模式与八进制数相同则为真若有- 选项,则文件存
取模式含有八进制数规定模式即为真
-size n[c] 文件块长度为 n 则真(一块为512字节),若
有c 选项,则文件字节长度为 n 则真
-atime n 若文件的最近访问时间为 n 天前则为真,
find 命令将改变其访问的目录的访问时间
-mtime n 若文件的最近修改时间为 n 天前则为真
-ctime n 若文件状态为 n 天前改变则为真
-exec 命令 { }; 若命令返回值为0则真,{ }内为命令参数,
此命令必须以 ; 为结束
-ok 命令 { }; 与 exec 相同,只是在命令执行前先提示,若
回答 y 则执行命令
-print 显示输出使表达式为真的文件名
-newer 文件 若文件的访问时间比newer 指定的文件新则真
-depth 先下降到搜索目录的子目录,然后才至其自身
-mount 仅查找包含指定目录的文件系统
-local 文件在当前文件系统时为真
-type c 文件类型为 c 则真,c 取值可为 b(块文件) c (字符文件)
d(目录) l (符号链接) p (命名管道) f (普通文件)
( 表达式 ) 表达式为真则真
-links n 文件链接数为 n 时为真
-user 用户 当文件属于用户时为真,用户可用数字表示UID
-nouser 当文件不属于 /etc/passwd 中的一个用户时为真
-group 文件组 当文件属于文件组时为真,文件组可用数字表示GID
-nogroup 当文件不属于 /etc/group 中的一个组时为真
-fstype 类型 当文件所属文件系统类型为指定类型时真
-inum n 当文件 i 节点号为 n 时为真
-prune 当目录名与模式匹配时,不再搜索其子目录
可以用逻辑操作符将简单表达式连接成复杂表达式
逻辑操作符有 ! 表示非操作, -o 表示或操作,两个表达式并列则表示
与操作
例子:
find / -name find* -print
从根目录开始搜索文件名如 find* 的文件并显示之
find ./ -exec sleep{1}; -print
每秒显示一个当前目录下的文件
find $HOME (-name a.out -o -name ‘*.o’ ) -atime +7 -exec rm {} ;
从$HOME目录开始搜索,删除所有文件名为a.out 或 *.o 且访问时间在7天前的文件

1.25 grep

语法: grep [选项] 模式 文件...: 在指定的文件中搜索模式,并显示所有包含模式的行,模式是一个正规表达式,在使用正规表达式时,最好将其引在单引号(’) 中,若指定文件为缺省,则使用标准输入,正规表达式可以是:
. 匹配任意一个字符

  • 匹配0个或多个*前的字符
    ^ 匹配行开头
    $ 匹配行结尾
    [] 匹配[ ]中的任意一个字符,[]中可用 - 表示范围,
    例如[a-z]表示字母a 至z 中的任意一个
    \ 转意字符
    命令中的选项为:
    -b 显示块号
    -c 仅显示各指定文件中包含模式的总行数
    -i 模式中字母不区分大小写
    -h 不将包含模式的文件名显示在该行上
    -l 仅显示包含模式的文件名
    -n 显示模式所在行的行号
    -s 指定文件若不存在或不可读,不提示错误信息
    -v 显示所有不包含模式的行
    例子:
    grep ‘good’ * 在所有文件中搜索含有字符串 good 的行
    grep ‘^myline’ mytext 在文件mytext中搜索行首出现myline字符串的行

1.26 vi

语法:vi [-wn] [-R] 文件…
说明: vi 是一个基于行编辑器 ex 上的全屏幕编辑器,可以在vi 中使用 ex,ed的全部命令,vi选项中 -wn 指将编辑窗口大小置为n行,-R 为将编辑的文件置为只读模式, vi 工作模式分为命令模式和输入模式,一般情况下在命令模式下,可敲入vi命令,进入输入模式下时可以编辑要编辑的文本,命令 a A i I o O c C s S R 可进入输入模式,在输入模式下按 ESC 键可推出输入模式,回到命令模式,在命令模式中敲入: 命令,则可进入ex方式,在屏幕底部出现提示符 : ,此时可使用任意ex命令,屏幕底行也用来作/ ? ! 命令的提示行,大多数命令可以在其前面加数字,表示命令执行的重复次数,下面简单介绍一下vi 的命令集,^ 表示(CTRL)键
^B 退回前一页,前面加数字表示重复次数,每次换页时
保留上一页的两行
^D 在命令模式下,表示下滚屏幕的一半,在输入模式下,表示回退至
左边的自动缩进处
^E 显示屏幕底线之下的一行
^F 前进一页,前面加数字表示重复次数,每次换页时
保留上一页的两行
^G 显示当前文件名,当前行号和文件总行数,并用百分号当前行在
整个文件中的位置
^H(退格) 在命令模式下,光标左移一格;在输入模式下,删去前面的字符
^I(TAB) 在输入模式下,产生一串空格
^J(LF) 光标下移一行
^L 刷新屏幕,即将屏幕重新显示
^M(回车) 在命令模式下,光标移动至下行开头
在输入模式下,开辟一新行
^N 光标下移一行
^P 光标上移一行
^Q 在输入模式下,将其后的非打印字符作为正文插入
^R 刷新屏幕
^U 屏幕上滚一半,前面加数字时表示上滚的行数,此数字对
以后的^D ^U 命令有效
^V 在输入模式下,将其后的非打印字符作为正文插入
^W 在输入模式下,使光标回退一个字
^Y 显示屏幕底线之上的一行
^Z 暂停编辑,退回上层Shell
^[(ESC) 退出输入模式,回到命令模式
! 暂时退出编辑,执行Shell命令
(双引号) 用于标志有名缓冲区,编号缓冲区1-9用于保存被删去的正文,字
母名缓冲区a-z供用户存放自定义的正文
$ 将光标移动到当前行尾,前加数字则表示前移行数,如2$表示移动
到下一行行尾
% 将光标移动到配对的小括号()或大括号{}上去
( 退回句子开头
) 前移到句子开头

  • 退到上一行第一个非空格字符
    . 重复上一次改变缓冲区内容的命令
    / 模式 向前搜索模式,将光标移动到模式出现处,模式是一个正规
    表达式,(参看 grep)
    : 在屏幕底部提示:,其后可使用ex命令
    ? 功能同 / ,但方向是向前查找
    [[ 光标回退至前一节分界处
    \ 转意符
    ]] 光标前移至节分界处
    ^(不是CTRL) 光标移至当前行第一个非空字符上
    ‘ 连续两个”表示将光标移至其移动前的位置,’后跟字母表示光标字
    母标记的行首(参看 m 命令)
    A 在行尾插入正文,进入输入模式
    B 光标回退一个字
    C 替换光标后的内容
    D 删除光标后的内容
    E 光标前移到字尾
    F 字符 在当前行向左查找指定字符
    G 光标移动到其前面数字指定的行,若未指定则移动到最后一行
    H 光标移动到屏幕顶行,若前面有数字,则移动到屏幕上该数字
    指定的行
    I 在行开头插入正文
    J 连接两行,若前面有数字则连接数字指定的行
    L 光标移动到屏幕底行,若前面有数字,则移动到屏幕底线往上数该
    数字指定的行
    M 光标移动到屏幕中线
    N 使用模式查找/或?时,重复找下一个匹配的模式,但方向与上次相
    反,其功能同 n ,但方向相反
    O 在当前行上开辟一新行
    P 将上次被删除的正文插入光标前面,可在其前面加缓冲区编号,编
    号1-9用于保存被删去的正文,字母名缓冲区a-z供用户存放自定
    义的正文
    Q 从vi 推出进入ex命令状态
    R 替换字符串
    S 替换整行
    T 字符 向左查找字符
    U 将当前行恢复至第一次修改前的状态
    W 光标移至下一个字首
    X 删除光标前的字符
    Y 将当前行存入无名缓冲区,前面加数字表示存入的行数,也可用有
    名缓冲区来保存,以后可用命令p或P将其取出
    ZZ 存盘退出vi
    a 光标后插入正文
    b 光标回退至上一个字首
    cw 替换当前字
    c) 替换当前句子
    dw 删除一个字
    dd 删除一行
    e 光标移到下一个字末
    f 字符 在当前行向前查找字符
    h 光标左移一格
    i 在光标前插入正文
    j 光标下移一行
    k 光标上移一行
    l 光标右移一格
    m 字母 用字母标记当前行,以后可用 ‘字母使光标移动到当前行,
    (参看’命令)
    n 重复上次 / 或 ? 命令
    o 在当前行下开辟一新行
    p 将用户缓冲区内容放到光标位置(参看P命令)
    r 替换当前字符
    s 用一串字符替换当前字符
    t 字符 光标移动至字符前
    u 取消上次操作
    w 光标移至下一字首
    x 删除当前字符
    yw 将当前字存入无名缓冲区,前面可加x,表示存入名字为x的有名
    缓冲区(x为a-z),也可加数字表示存入的字数,以后可用P或p命
    令取出
    yy 将当前行存入无名缓冲区,用法参看yw
    { 光标移动至前一段开头
    | 光标移至行首,若前面加数字,则移到数字指定行的行首
    } 光标移至下一段开头
    在:提示符下,常用命令如下:
    :w 当前文件存盘
    :w! 强制存盘
    :w 文件 将内容写入指定文件
    :w! 文件 强制写入指定文件
    :x,y w 文件 将 x至 y 行写入指定文件中
    :r 文件 将文件读到光标位置
    :r ! 命令 将系统命令的输出读到光标位置
    :q 退出编辑
    :q! 强制退出
    :x 与命令ZZ相同
    :e 文件名 编辑另一文件
    :e ! 重新编辑文件,放弃任何改变
    :sh 执行sh,结束后回到编辑
    :! 命令 执行命令后回到编辑
    :n 编辑下一文件
    :n 文件表 重新定义待编辑文件表
    :set 设置 vi 的选项,例如 set nu 表示每行前显示行号,在选项前
    加no则表示清除该选项,例如 set nonu 表示每行前不显示行
    号,下面是一些常用的选项:
    ai 自动缩进
    aw 编辑下一文件前自动存盘
    ic 查找字符串时不区分大小写
    nu 每行前显示行号
    sm 输入)及}时显示与之配对的( 或 {
    slow 插入时延迟屏幕刷新
    ws 使查找能绕过文件尾从头进行
    wa 写文件之前不作对文件的检查

第二章 设备管理

2.1 stty
语法: stty [-a] [-g] [选项]

-a 显示当前终端所有设置
-g 以能作为 stty 命令参数的方式显示终端设置
以下是终端常用设置,在设置前加-表示清除设置:
1.控制方式
ispeed 0 110 300 600 1200 1800 2400 4800 9600 19200 38400
本命令设置终端输入波特率,若为0则使用缺省波特率。
例如 stty ispeed 9600
ospeed 0 110 300 600 1200 1800 2400 4800 9600 19200 38400
本命令设置终端输出波特率,参看 ispeed。
2.输入方式
ingbrk(-ignbrk) 忽略(不忽略)中断(BREAK)
brkint(-brkint) 设置(清除)信号INTR为中断信号
inlcr(-inlcr) 将换行转换(不转换)成回车
icrnl( -icrnl) 将回车转换(不转换)成换行
igncr(-ignrc) 忽略(不忽略)回车
iuclc( -iuclc) 将大写字母转换(不转换)成小写字母
3.输出方式
olcut(-olcut) 将小写字母转换(不转换)为大写字母
onlcr(-onlcr) 输出时将换行符转换(不转换)为回车换行
ocrnl(-ocrnl) 输出时将回车符转换(不转换)为换行符
4.本地方式
echo (-echo) 设置(清除)回显
stwrap(-stwrap) 截断(不截断)大于79个字符的行
echoctl(-echoctr) 将控制键回显为^
2.2 tty

2.3 lp

语法: lp 文件…

例子:
lp myfile 将文件myfile 送打印机输出

2.4 lpstat

语法: lpstat [选项] [打印任务号]

-a [打印机表] 显示打印机表中指定的打印机可否接收打印请求
-c [打印机类名] 显示打印机种类及在该打印机种类下的成员
-d 显示系统预设的打印机
-p [打印机表] 显示打印机表中打印机状态
-r 显示lp 请求程序表( lp request scheduler)
-s 打印系统统计表
-t 打印所有状态信息
-u [用户] 显示由用户发出的打印请求
-v [打印机名表] 显示每个打印机名称,是对应于该打印机设备文件的路径名
例子:
lpstat -t 打印所有状态信息

2.5 cancel

语法: cancel 打印任务号
cancel 打印机名
cancel -u 用户名 [打印机]

例子:
cancel -u mary 取消用户 mary 的所有打印请求

2.6 enable

语法: enable 打印机表

2.7 disable

语法: disable [-cw] 打印机表

-c 立即取消正在打印的打印请求
-w 等正在打印的内容打完后,才禁止打印机

2.8 sync

2.9 mount

语法: mount [-r] 设备 目录

-r 以只读方式安装

2.10 umount

语法: umount 设备

2.11 tar

语法: tar -c[vwfbL] [设备] [块] 文件…
tar -r[vwfbL] [设备] [块] 文件…
tar -t[vfL] [设备] [文件...]
tar -u[vwfbL] [设备] [块] 文件…
tar -x[lmovwfL] [设备] [文件...]

r 附加方式归档
x 抽取文件
t 显示文件
u 附加方式归档,同时删除旧版文件
c 建立新档案文件
v 显示所处理的文件名
w 处理文件前,要求用户确认
f 文件名 使用指定文件名作为档案文件
bn 每次读写 n 块,缺省值为1,最大值为20
m 将新的文件修改时间设为获取时的时间
o 获取出来的文件以下达tar指令的UID和GID存储
例子:
tar cvf file.tar *
tar tvf file.tar

2.12 df

语法: df [-t] 文件系统: 显示剩余 i 节点和块数,使用 -t 选项,还显示总块数和 i 节点数
例子: df -t

2.13 du

语法: du [-ars] [目录]

-r 提供无法打开的文件信息
-s 仅显示指定目录所占空间的总和
-a 显示文件大小及目录总空间,其后可根文件名作参数

第三章 进程管理

3.1 sleep

语法: sleep 时间

3.2 ps

语法: ps [ -efl] [ -t 终端表] [ -u 用户表] [ -g 组表]

-e 显示出现在正在运行的所有进程
-f 显示所有信息
-l 产生一个长列表
-t 显示指定终端进程
-u 显示指定用户进程
-g 显示指定组进程

3.3 at

语法: at [-f 命令文件] [-m] [-q 队列] -t 时间
说明: at命令由cron管理,在未来一个指定的时间内执行一组命令,命令可以从指定文件读入,也可从键盘读入,从键盘读入时以EOF结束,(通常为CTRL D)
-f 从指定命令文件中读入命令
-m 命令执行完后给用户发邮件
-q 将命令放入指定队列
-t 指定时间 指定的时间格式为 [[CC]YY]MMDDhhmm[.ss],CC表示
年的前两位,YY表示年的后两位,MM表示月,DD表示日,hh表
示时,mm表示分,ss表示秒

3.4 kill

语法: kill -信号 进程号
说明: kill 将信号传递给指定进程,信号意义如下:
1 暂停(hangup)
2 中断(interrupt)
3 退出(quit)
4 非法指令(illeqgal instruction)
5 跟踪中断(trace trap)
6 Abort
7 EMT 指令(Emulation trap)
8 浮点格式异常(floating point exception)
9 kill(不可忽略)
10 通道错误(bus error)
11 不合法内存段
12 错误的系统调用参数
13 写入不可读的连通管道
14 alarm clock
15 软件结束信号
16 用户定义信号一
17 用户定义信号二
例子:
kill -9 444 杀死进程号为 444 的进程

第四章 系统管理和用户管理

4.1 who

who am i
说明: 列出现在系统中的用户,who am i 显示自己

4.2 whodo

语法: whodo [-h] [-l] [用户]

-h 不显示头部信息
-l 长列表格式输出

4.3 passwd

语法: passwd [用户]

4.4 logname

4.5 su

语法: su [- ] 用户名: su 命令使当前用户成为指定用户,若无指定,则成为超级用户,但必须输入该用户的密码,-选项表示用该用户的注册环境成为该用户

4.6 time

语法: time 命令

4.7 date

date mmddhhmmyy: date 无参数时用于显示系统时间,修改时间时参数形式为
月日时分[年]

4.8 shutdown

语法: shutdown [-y] [-gn] [-in]

说明: UNIX 系统必须先关闭系统,再关电源
-y 对提示的所有问题都回答 y
-gn 给其他用户n 秒的时间退出,缺省值为60秒
-in 系统退到第n种方式,方式如下:
0 关机
1 单用户模式
2 多用户模式
3 网络下的多用户模式
6 关机并重新启动

4.9 fsck

语法: fsck [-y]

第五章 通信和邮件

5.1 wall

5.2 mesg

语法: mesg [-n] -y: mesg 用 -n 参数则禁止其他用户用 write 发消息,用 -y 参数则允许接收消息,若无参数则报告现在的状况

5.3 write

语法: write 用户 终端
说明: write 与指定的终端上的用户直接对话,直到接收到文件结束符
例子:
write mary console

5.4 mailx

语法: mailx [选项] [名字]

-e 检查是否有邮件,若有则返回0
-f 文件名 从文件中读取邮件而非从邮箱中
-H 只显示信件标题
-s 标题 设定标题为指定标题
[命令说明]
. 当前信件
n 第 n 封信
^ 第一封未被处理的信
$ 最后一封信

  • 所有的信
    n-m 第n 封至第m封信
    用户 由指定用户发出的信
    / 字符串 标题中包含字符串的信
    :c 满足指定类型c的信,类型可为
    d 已删除的信
    n 信传送的信
    o 旧信件
    r 已读过的信
    u 未读过的信
    p 一次显示多封信
    t 显示某封信的前若干行
    si 显示信件字符数
    h 显示信件标题
    d 删除信件
    u 恢复信件
    s [信件表] 文件名
    将信件存入指定文件中
    q 退出
    r 回信
    ~e 编辑信件
    ~r 文件 从文件中读取信件
    例子:
    mailx mary < myletter

第六章 Shell 编程

shell 不但是 Unix 的用户交互界面,还是一门程序设计语言,系统注册进入时就会执行一个shell命令文件 .profile ,下面对shell中的常用命令作简单介绍。
$n shell 程序命令行中的第n 个参数,n为0-9,当n 为0时表示命令名
$# 命令行中参数的个数
$$ 本shell 命令的进程号
$! 最后一个后台进程的代号
$* 所有命令行参数
$@ 与$*相似,但其值不同
$HOME 注册时进入的目录
$PATH 命令的搜索目录
$PS1 系统第一个提示符,一般为$
$PS2 系统第二个提示符,一般为>
shift [n] 将命令行参数往左移一位,但$0不变
变量名=字符串 将字符串赋予变量名,以后可用$变量名引用该变量
export 变量名表 将变量名表所列变量传递给子进程
read 变量名表 从标准输入读字符串,传给指定变量
echo 变量名表 将变量名表指定的变量显示到标准输出
set 显示设置变量
env 显示目前所有变量
if 条件执行,语法是: if 条件
then 指令
fi
case 分支执行,语法是: case 字符串变量 in
值1) 指令…
值2) 指令…

esac
while 条件为真时循环,语法是:
while 条件
do
指令…
done
until 条件为假时循环,语法是:
until 条件
do
指令…
done
for 变量在表中时循环,语法是:
for 变量名 in 字组表
do
指令…
done
break 从循环中退出,语法:
break n
n 表示跳出循环的层数
continue 继续循环,语法:
continue n
n 表示退到包含continue 语句的第n 层继续循环
exit 退出shell
func shell内部可定义函数,语法: func 函数名()
{
指令…
}
expr 将其后的串解释为表达式并计算其值,运算符前后需有空格
trap 捕获信号,语法 trap n ,捕获信号 n (信号说明参见kill)
test 条件测试,语法 test [选项] 参数
选项 -f 文件 若文件存在且可读则真
-w 文件 若文件存在且可写则真
-x 文件 若文件存在且可执行则真
-f 文件 若文件存在且为普通文件则真
-d 文件 若文件存在且为目录文件则真
-p 文件 若文件存在且为fifo文件则真
-s 文件 若文件存在且不空则真
-z 串 若串长度为0则真
-n 串 若串长度不为0则真
串 若串不是空串则真
串1=串2 若串1等于串2则真
串1!=串2 若串1不等于串2则真
n1 -eq n2 若n1与n2数值相当则真
n1 -ne n2 若n1与n2数值不相当则真
n1 -lt n2 若n1小于n2则真
n1 -le n2 若n1小于等于n2则真
n1 -gt n2 若n1大于n2则真
n1 -ge n2 若n1大于等于n2则真
可用 与 -a 或 -o 非 ! 将条件表达式连接起来

第七章 数学计算命令

语法: bc [-c] [-l] [文件...]

-c bc 只编译,而不将编译结果送dc,将其送到标准输出上
-l 预定义一个数学函数库,可在bc中使用以下函数
s(x) sine
c(x) cosine
e(x) exponential
l(x) log
a(x) arctangent
j(n,x) Bessel
例子:
bc -l 进入bc
scale=10 将小数位定为10位
e(1) 计算e的小数点后10位
quit 退出bc

附录 UNIX 常用命令简单说明

UNIX 命令大多数可用联机帮助手册 man 获得帮助,下面是常用命令及简单说明,可供用户快速查找使用。

命令 功能简述

acctcom 等于进程记帐文件
accton 启动或中止记帐进程
adb 汇编语言调试工具
admin 创建和管理SCCS文件
ar 档案文件和库文件管理程序
as 汇编器
asa 回车控制
at 在指定时间执行程序
awk 模式搜索和处理语言
banner 制作标题
basename 生成文件基本名(无前。后缀)
batch 命令的延迟执行
bc 计算器
bdiff 大型文件比较
bfs 大文件搜索
break 退出循环
cal 打印日历表
calendar 打印日历表
cancel 取消打印任务
case 分支语句
cb C语言整理程序
cd 改变当前目录
cc C语言编译器
cdc SCCS实用程序
cflow 生成C语言流程图
checkeq 数学公式排版命令
chgrp 改变文件组
chmod 改变文件存取模式
chown 改变文件主
chroot 改变根目录
cksum 显示校验和
clri 清除指定的I节点
cmp 文件比较
col 过滤反向换行
comb SCCS实用程序
comm 显示两个排序文件的公共行
command 执行简单命令
continue 进入下一循环
cp 复制文件
cpio 复制文件档案
cpp C语言预处理程序
crash 检查系统内存映象
create 建立临时文件
cref 生成交叉引用表
cron 在指定时间执行一组命令
crontab 为命令cron 准备crontab文件
crypt 加密/解密
csplit 将一个文件分解
ct 远程终端注册
ctags 创建供vi使用的标识符
cu 呼叫另一UNIX系统
cut 断开一文件中所选择的字段
cxref 生成C程序交叉访问表
date 打印和设置时间
dc 桌面计算器
dd 转换和复制文件
delta SCCS实用程序
deroff 去掉排版格式
devnm 标识设备名
df 显示可用磁盘空间
diff 显示两个文件的差异
diff3 显示三个文件的差异
dircmp 目录比较
dis 反汇编程序
du 显示对磁盘的占用情况
dump 对指定文件备份
echo 回显指定参数
ed 行编辑器
edit 文本编辑器
egrep 在文件中查找指定模式
env 设置命令执行环境
eqn 数学公式排版命令
eval 执行指定命令
ex 行编辑器
exec 执行指定命令
exit 进程中止
expand 使表格占满行宽
export 将变量传递给子程序
expr 计算表达式值
factor 因式分解
false 返回FALSE
fgrep 在文件中查找指定模式
file 确定文件类型
find 查找符号条件的文件
fmt 安排简单的文本格式
fold 折行
for 循环语句
fsck 文件系统检查和修复
fsdb 文件系统调试程序
fumount 强制性拆协指定资源
function 函数说明
fuser 列出使用文件的进程
fwtmp 产生记帐记录
get SCCS实用程序
getconf 查找配置参数
getopt 获得命令中的选择项
getopts 获得命令中的选择项
getty 设置终端类型、模式、行律等
grep 在文件中查找指定模式
head 打印文件的头若干行
hexdump 按十六进制转储文件
id 显示用户号
if 条件语句
init UNIX 初启进程
install 安装一个文件到文件系统
ipcrm 删除IPC队列
ipcs 显示IPC状态
join 连接两个文件(关系操作〕
kill 中止指定进程
killall 中止所有活动进程
labelit 给文件系统提供标号
ld 目标文件链接编辑器
lex 词法分析程序
line 读一行
link 连接文件
lint C程序检查程序
ln 链接文件
local 建立局部变量
logger 显示注册信息
login 注册
logname 获取注册名
look 在排序文件中查找某行
lorder 查找目标库的次序关系
lp 打印文件
lpr 打印文件
lpstat 显示打印队列状态
ls 目录列表
mail 发送或接收电子邮件
mailx 发送、接收或处理电子邮件
make 执行有选择的编译
makekey 生成加密码
man 显示命令用法
mesg 接收或取消对话方式
mkdir 建立目录
mkfifo 建立FIFO文件
mkfs 建立文件系统
mknod 建立文件系统的I节点
mount 安装文件系统
mv 移动文件
mvdir 移动目录
ncheck 按节点号生成节点名清单
neqn 数学公式排版命令
newgrp 把用户加入到新组
news 打印消息
nice 改变命令执行优先级
nl 给文件加行号
nm 显示目标文件符号表
nohup 忽略挂起或退出执行命令
nroff 文本文件排版
od 按八进制转储文件
pack 压缩文件
passwd 改变口令
paste 文件合并
pax 可移植档案管理程序
pcat 显示压缩格式文件
pg 分屏显示
pr 按打印格式显示文件
pstat 报告系统信息
pwck 口令文件校验程序
pwd 显示当前工作目录
quot 检查文件系统所有权
ratfor 转换成标准FORTRANC程序
read 从标准输入读一行
readonly 标记变量为只读
red 文本编辑器
regcmp 正规表达式编辑
restor 文件系统恢复程序
restore 文件系统恢复程序
return 返回语句
rev 颠倒文件中每行字符次序
rm 删除文件
rmdel SCCS使用程序
rmdir 删除目录
rsh(net) 远程SHELL
rsh(sec) 受限SHELL
runacct 运行日常记帐程序
sact SCCS实用程序
sag 打印系统活动图
sar 报告系统活动
sccsdiff SCCS实用程序
sdb 符号调试器
sdiff 并列显示两个文件的差别
sed 流编辑器
sendto 发送邮件
set 设置选项或参数
setmnt 建立文件系统安装表
sh SHELL解释器
shift 命令行参数移位
shl SHELL层(layer)管理程序
shutdown 关机
size 显示目标文件长度
sleep 挂起进程一段时间
sort 文件排序和合并
spell 拼写错误检查程序
spellin 拼写错误检查
spellout 拼写错误检查
spline 按平滑曲线输出数据
split 分解一个文件
strings 在目标文件中寻找可打印字符
strip 删除符号表
stty 设置终端模式
su 改变用户
sum 显示文件校验和及块数
sync 更新磁盘
tabs 设置制表符
tbl 表格排版
tee 在管道上建立多通路
tic 终端数据库编译程序
time 打印执行命令所花时间
tiemx 报告命令所花时间及活动
touch 更新文件时间
tput 恢复终端或查询数据库
tr 转换字符
trap 捕获信号
troff 文本文件排版
true 返回TRUE
tsort 拓扑排序
tty 显示终端设备名
umask 设置文件掩码
umount 拆卸文件系统
uname 显示系统名
unget SCCS实用程序
uniq 删除文件中重复行
units 度量单位转换
unlink 删除文件
unpack 将压缩文件还原
until 循环语句
update 更新磁盘
val SCCS实用程序
vc SCCS实用程序
vi 全屏幕编辑器
volcopy 文件系统的文字拷贝
wait 等待所有字进程结束
while 循环语句
who 显示谁在使用系统
whodo 显示哪些用户在做什么
write 和另一用户直接对话
xargs 建立参数表并执行命令
yacc 语法分析程序生成器

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment