助您的企业征战互联网 - 苜蓿草网络

Linux系统下的常用命令

时间:2014-05-25 20:21     热度:753    作者:邹平苜蓿草网络
################################################################################
# Linux系统命令的基本格式:
# 命令    -选项    参数
# ls     -la     /etc
#
# 常用快捷键:
# 1 任何时候都可以按 ctrl + c 来终止命令的执行
# 2 按 tab 键可以补全命令
# 3 按 ctrl + l 组合键可以清屏
#
# 命令权限:
# root命令目录 /sbin 与 /usr/sbin, sbin=super binary的缩写
# 所有用户都可以执行的命令目录 /bin 与 /usr/bin, usr = user
#################################################################################

 #  文件搜索命令 ls  cd  pwd  mkdir  touch  cp  mv  rm  cat  more  ln

##
# 【ls】 显示目录文件, list 的缩写
# 命令所在目录 /bin/ls
# 执行权限:所有用户
ls 选项[-ald] [文件或目录]
   -a #显示所有文件,包括隐藏文件
   -l #显示详细信息
   -d #查看目录属性
ls    #显示当前目录下的所有文件
ls -a #显示根目录下所有文件(包括隐藏文件)
##
# 【 cd 】改变目录, change directory 的缩写
# 所在路径 shell内置命令
# 执行权限 :所有用户
# 切换至根目录
cd /
# 切换至当前目录的父目录
cd ..

##
#【 pwd 】显示当前目录,print working directory 的缩写
# 所在路径 /bin/pwd
# 执行权限 :所有用户

##
#【 mkdir 】创建目录, make directories
# 所在路径 /bin/mkdir
# 执行权限 :所有用户
# 根目录下创建xk目录
mkdir /xk
# 当前目录下创建xk目录
mkdir xk

##
#【 touch 】创建一个空文件
# 所在路径 /bin/touch
# 执行权限 :所有用户
# 创建文件
touch filename

##
#【 cp 】复制文件或目录, copy
# 所在路径 /bin/cp
# 执行权限 :所有用户
cp -R [源文件或目录] [目的目录]
cp file1 file2 ... dir # 将file1 file2复制到dir目录下,可以同时将很多个文件同时复制
cp -p file1 file2      # 复制文件时,新创建的文件时间与源文件相同
cp -R dir1 dir2

##
#【 mv 】类似windows下的剪切功能move
# 所在路径 /bin/mv
# 执行权限 :所有用户
mv [源文件或目录] [目的目录]    # 移动目录
mv file1 file3               # 改名,将file1改名为file3

##
#【 rm 】删除文件remove
# 所在路径 /bin/rm
# 执行权限 :所有用户
rm -r [文件或目录]             # 删除文件或目录
   -r                        # 删除目录
rm -f filename               # 删除文件是不进行确认
rm -rf dir                   # 删除目录并且不进行确认

##
#【 cat 】显示文件内容concatenate and display files
# 在路径 /bin/cat
# 执行权限 :所有用户
cat filename    # 查看文件内容

##
#【 more 】分页显示文件内容
# 在路径 /bin/more
# 行权限 :所有用户
more [文件名]                  # 按(空格)或f 显示下一页 | enter显示下一行 | q退出

##
#【 ln 】产生链接文件link (类似于windows下的快捷方式)
# 所在路径 /bin/ln
# 执行权限 :所有用户
ln -s [源文件] [目标文件]         # -s表示产生软连接(soft),不加表示硬链接
ln -s /etc/issue /issue.soft    # 在根目录下产生一个软连接,有点类似于快捷方式
ln /etc/issue /issue.hard      # 类似于拷贝+同步更新,一个变化另一个也会变化

 # 权限管理命令

##
#【chmod】改变文件和目录的权限change the permissions mode of a file
# 所在路径 /bin/chmod
# 执行权限 :所有用户
# r:读权限对应的数字为4
# w:写权限对应的数字为2
# x:执行权限对应的数字为1
# 注意:
# 文件目录赋予写权限,目录下的文件才能删除、才能创建
chmod 用户类型(u|g|o) 权限操作(+|-|=) 权限(r|w|x) [目录或文件]
chmod u+wx file1              # 文件所有者增加写、执行权限
chmod o-rx file1              # 其他人对该文件取消读、执行权限
chmod g=rwx file1             # 文件所属组赋予读、写、执行权限
chmod 755 file1               # 表示文件所有者具有rwx,其他人具有rx,所属组具有rx权限
chmod 777 file1               # 表示文件所有者具有rwx,其他人具有rwx,所属组具有rwx权限
##
# 文件权限:
# r - cat、more、head、tail
# w - echo、vi
# x - 命令、脚本
##
# 目录权限:
# r - ls
# w - touch、mkdir、rm
# x - cd

##
#【chown】改变文件或目录的所有者change file ownership
# 所在路径 /bin/chown
# 执行权限 :所有用户
chown nobody file1            # 将file1所有者改变为nobody

##
#【 chgrp 】改变文件或目录的所属组change file group ownership
# 所在路径 /bin/chgrp
# 执行权限 :所有用户
chgrp adm file1               # 将file1所属组改变为adm

##
#【 umask 】默认权限操作
# 所在路径 /bin/umask
# 执行权限 :所有用户
# 注意 :默认创建的文件,不会有执行权限
umask                # 会直接返回权限掩码值 0022,应用权限 777 - 022 = 755(真正权限)
umask -S             # 查看默认权限
umask 027            # 更改默认创建文件的权限  777 - 750 = 027 (掩码)

# 文件搜索命令

##
#【 which | whereis 】显示系统命令所在目录
# 所在路径 /usr/bin/which
# 执行权限 :所有用户
which [文件命令]              # 只提供别名信息
whereis ls                   # 会显示帮助信息文件

##
#【 find 】查找文件或目录
# 所在路径 /usr/bin/find
# 执行权限 :所有用户
find [搜索路径] [搜索关键字]
find /etc -name init*      # 在目录etc中查找文件init,  *通配符任意字符
find /etc -name init???    # ?匹配单个字符
find / -size +204800       # 在根目录下查找大于100M的文件,100MB=102400KB=204800block
find /home -user samlee    # 在home目录下查找所有者为samlee的文件
find /etc -ctime -l        # 在etc目录下查找24小时内被修改过属性的文件和目录
                           # 天   ctime、atime、mtime c=属性改变时间,a=访问时间,m=文件内容修改时间
                           # 分钟 cmin、amin、mmin
find /etc -size +163840 -a -size -204800  # 在etc目录下查找大于80M小于100MB的文件
                                          # -a = and, -o = or

find /etc -name inittab -exec ls -l {} \;  # 在etc下查找inittab文件并显示其详细信息
                                           # {}表示find查找的结果
                                           # \表示转义符
                                           
find /home -user samlee -exec rm -rf {} \; # 查找用户samlee创建的文件并全部删掉
                                           # 与-exec相同的还有-ok,-ok会确认您是否执行
                                           
find /etc -name init* -a -type f -exec rm -rf {} \;  # etc下查找init开头的二进制文件并执行删除
find . inum 16 -exec rm -rf {} \;                    # 当前目录下查找i节点为16的文件进行删除(当无法用文件名进行删除的时候非常有用)

##
#【 locate 】查找文件或目录list files in databases
# 所在路径 /usr/bin/locate
# 执行权限 :所有用户
locate file     # 列出所有跟file相关的文件

##
#【 updatedb 】建立整个系统目录文件的数据库update the slocate databse
# 所在路径 /usr/bin/updatedb
# 执行权限 :root
updatedb

##
#【grep】在文件中搜寻字符串匹配的行并输出
# 所在路径 /bin/grep
#执行权限 :所有用户
grep [指定字串] [源文件]
grep ftp /etc/services   # 所有跟ftp相关的

 # 帮助命令

##
#【man】获得帮助信息manual
# 所在路径 /usr/bin/man
# 执行权限 :所有用户
man ls         # 查看ls命令帮助信息
man services   # 查看配置文件services的帮助信息

##
#【 info 】获得帮助信息infomation
# 所在路径 /usr/bin/info
# 执行权限 :所有用户
info ls        # 查看ls命令帮助信息

 # 压缩解压命令

##
#【 gzip 】压缩文件GNU zip
# 所在路径 /bin/gzip
# 执行权限 :所有用户
# 注意:1、gzip只能压缩文件,2、gzip不保留源文件
gzip 选项 [文件]

##
#【 gunzip 】解压缩文件GNU unzip
# 所在路径 /bin/gunzip
# 执行权限 :所有用户
gunzip file1.gz
gzip -d file1.gz     # 效果同上

##
#【 tar 】打包目录  后缀.tar.gz
# 所在路径 /bin/tar
# 执行权限 :所有用户
tar 选项[c|v|f] [目录]
    -c  # 产生.tar打包文件
    -v  # 显示详细信息
    -f  # 指定压缩后的文件名
    -z  # 打包同时压缩
tar -zcvf dir1.tar.gz dir1  # 将目录dir1打包并压缩为dir1.tar.gz
tar -zxvf dur1.tar.gz       # 解包 只有 -x 这一选项不同

##
#【 zip 】压缩文件或目录 .zip
# 所在路径 /usr/bin/zip
# 执行权限 :所有用户
zip 选项[-r] [压缩后的文件名称] [文件或目录]
    -r # 压缩目录

##
#【 unzip 】解压缩文件
# 所在路径 /usr/bin/unzip
# 执行权限 :所有用户
unzip test.zip

##
#【 bzip2 】压缩文件 .bz2
# (压缩比非常大,与gzip用法相同)只能压缩文件, 可以先用tar打包后压缩
# 所在路径 /usr/bin/bzip2
# 执行权限 :所有用户
bzip2 -k file1
      -k #保留源文件
      
##
#【 bunzip2 】解压缩文件
# 所在路径 /usr/bin/bunzip2
# 执行权限 :所有用户
bunzip2 -k file1.bz2

 # 网络通信指令

##
#【write】向另外一个用户发信息,以CTRL+D作为结束
# 所在路径 /usr/bin/write
# 执行权限 :所有用户
# 注意:实时通信,两个用户同时在线才能通信
write user1

##
#【 wall 】向所有用户广播信息
# 所在路径 /usr/bin/wall
# 执行权限 :所有用户
wall [message] [文件名]
wall Happy New Year!

##
#【 ping 】测试网络连通性
# 所在路径 /usr/sbin/ping
# 执行权限 :root
ping 选项 IP地址
ping 192.168.1.1
ping -c 3 192.168.1.1       # ping 3次结束
ping -s 60000 192.168.1.1   # ping 发送的包大小

##
#【 ifconfig 】查看网络设置信息
# 所在路径 /usr/sbin/ifconfig
# 执行权限 :root
ifconfig -a     # 显示所有网卡信息

 # Linux软件包管理  rpm、yum

rpm -e [软件名称]   # 卸载rpm格式软件
    -a  # 查询所有已经安装的软件包
    -f  # 查询文件所属软件包
    -p  # 查询软件包
    -i  # 显示软件包信息
    -l  # 显示软件包中的文件列表
    -d  # 显示被标注为文档的文件列表
    -c  # 显示被标注为配置文件的文件列表
rpm -e --nodeps [软件名称]  # 有依赖关系需要使用--nodeps强行卸载
rpm -ivh [软件名称].rpm     # 安装rpm软件包
rpm -ivh --excludedocs [软件名称].rpm   # 安装时不安装软件包中的文档文件
         --prefix PATH                 # 将软件包安装到指定路径(不太重要)
         --test                        # 只对安装进行测试,并不实际安装
         --replacepkgs                # 已存在的情况下进行覆盖安装
         --replacefiles               # 文件冲突时,替换安装
         --nodeps                     # 不考虑依赖强行安装,(十有八九安装后也不能使用)
rpm -Uvh [软件名称].rpm                # 升级安装
rpm -q [软件名称].rpm                  # 软件是否已经被安装过
rpm -qa | grep sudo                   # 列出所有rpm软件包,并查询含有sudo相关的软件包

# yum 需要联网,速度较慢
yum install [软件包名称]       # 安装软件包
yum check-update [软件包名称]  # 检测升级
yum update                   # 升级
yum list | grep 关键词        # 软件包查询
yum info [软件包名称]          # 查看软件包说明    
yum remove [软件包名称]        # 卸载
yum -help、man yum           # 帮助信息

# 源代码包安装(以下为源码包安装过程)
tar -xzvf proftpd-1.3.3d.tar.gz      # 解压解包
cd proftpd-1.3.3d                    # 进目录
./configure --prefix=/usr/local/proftpd    # 配置,指定安装目录
make                                 # 编译
make install                         # 安装

# 脚本安装
tar -xzvf webmin-l.530.tar.gz        # 解压解包
cd webmin-l.530                      # 进目录
vi README                            # 找一下目录下是否有 README 或 INSTALL,根据说明安装
./setup.sh                           # 安装

# 进程管理
# ctrl + c 终止执行  |  ctrl + z 挂起
# jobs               # 查看挂起的命令
# fg 进程编号   # 恢复至前台运行
# bg 进程编号  # 恢复至后台运行

# 查找根目录下init开头的文件,(重定向至init.find文件,&表示后台进程)
find / -name init > /test/init.find &
w     # 查看所有已登录用户    w=who
      # 里面有一条信息load average分别显示系统在过去1、5、15分钟内的平均负载程度。
      # 如果load average数值达到几十甚至几百,表示将接近崩溃,0.8以下表示负载较轻
w username    # 查看指定用户名的用户信息 w=who

# 进程查看
ps -a     # 显示所有用户进程
   -u     # 显示用户名和启动时间
   -x     # 显示没有控制终端的进程
   -e     # 显示所有进程,包括没有控制终端的进程
   -l     # 长格式显示
   -w     # 宽行显示,可以使用多个w进行加宽显示
ps -u     # 查看隶属于自己进程的详细信息
ps -aux   # 查看所有用户执行进程的详细信息
ps -aux | grep httpd   # 通过管道查看指定程序的进程信息
ps -uU username        # 查看指定用户启动的进程信息,如果占用资源过大,则kill掉

# 杀死进程
kill 进程号       # kill + 进程的pid可以杀死指定进程
kill -9 进程号    # 强行关闭
kill -1 进程号    # 重启进程
pgrep 进程名称    # 列出进程对应的pid
pkill 进程名称    # 直接杀死进程
nohup program &  # 进程在用户退出登录后仍旧执行(备份、时间很久的操作)

top  # 显示当前进程信息,很好用
{
    u # top状态下按u,查看指定用户进程
    k # top状态下按k,然后输入进程pid杀死指定进程
    h # 获得帮助
    r # 重新设置优先级
    s # 改变刷新时间间隔
}

# 计划任务
# yum provides at    // 显示at的包的全部名称
# yum install at-3.1.10-43.el16_2.1x86_64 // 安装at包

# at命令
# 安排一个或多个命令在指定的时间运行一次
at [-f 文件名] 时间
at -d    # 删除队列中的任务
at -l    # 查看队列中的任务
{  # 实例
    # 回车后会进入一个at的提示符,如果提示命令不存在需要先安装at包
    at now +5 minutes
    # 将/etc/file文件的内容广播出去。最好写绝对路径,否则有可能会有黑客问题
    at> /usr/bin/wall <  file="" at=""> # 回车后可以输入第二个命令,可以写N个命令
    at> # 写完后按ctrl + d保存
    at># batch命令
# 安排一个或多个命令在指定的时间运行一次
batch           # 与at命令一样,不同点是batch会在负载较低的时候执行

# crontab命令(周期性计划任务)
# 用于生成cron进程所需要的crontab文件
crontab -l   # 显示当前的crontab
        -r   # 删除当前的crontab
        -e   # 使用编辑器编辑当前的crontab文件
{
    # 回车后输入以下时间值
    crontab -e
    # 分钟 小时 天 月 星期 命令。这一个表示每天凌晨4点执行命令1
    0 4 * * * 命令1
    # 分钟 小时 天 月 星期 命令。这一个表示每个星期2,星期5下午4点执行命令2
    0 16 * * 2,5 命令2
    # 分钟 小时 天 月 星期 命令。这一个表示1-3月份的每个星期2、5执行命令3
    0 18 * 1-3 2,5 命令3
    # 分钟 小时 天 月 星期 命令。这一个与下面这一行共同组成一个计划
    # 星期一至星期五的每天下午5点半,执行广播(通知连接到本机的用户要关机了)
    30 17 * * 1-5 /usr/bin/wall <  2="" filename="" now=""> /backup/etc.bak.err
}
/etc/cron.allow   # 配置可以使用crontab的用户  
/etc/cron.deny    # 配置不允许使用crontab的用户

 # 用户管理

##
# 用户信息文件
# 存放位置:/etc/passwd
# linux系统的用户分为以下三种:
#   1、UID=0表示超级用户(用户只要UID=0都是超级用户跟root权限相同),
#   2、UID=500—60000表示普通用户(useradd添加的用户),
#   3、UID=1—499表示伪用户(不能登录系统,软件安装后默认就有的,如mysql、nginx等)
#  GID:表示组ID
#  宿主目录:表示用户登录系统后的缺省目录(每个用户必须有一个宿主目录,存放用户信息)
#  shell:表示用户使用的shell(命令解释器),默认为bash
vi /etc/passwd
root:x:0:0:root:/root:/bin/bash   # 用户名:密码位:UID:GID:注释性描述:宿主目录:shell

##
# 用户密码文件
# 存放位置:/etc/shadow
# 最小时间间隔(单位天):0表示不限制天数
# 最大时间间隔(单位天):设定为30表示30天后必须修改密码
# 限制时间(单位天):表示几天没有登录
vi /etc/shadow     # 密码文件
# 用户名:加密密码:最后修改时间:最小时间间隔:最大时间间隔:警告时间:账号闲置时间:失效时间:标志
root:xxxx:14965:0:99999:7:::
/etc/group            # 用户组文件
/etc/gshadow          # 用户组密码文件
/etc/login.defs       # 用户配置文件
/etc/default/useradd  # 用户配置文件(添加新用户默认配置)
/etc/skel             # 新用户信息文件
/etc/motd             # 登录信息(用户登录后显示的内容)
/etc/issue            # 登录信息(用户没有登录前就显示的欢迎信息)

 # 其他命令示例

# 查看正在运行状态的服务及端口
netstat -tunpl

##
# 输入重定向   0
# 输出重定向   1
# 错误输出重定向 2
# 备份/usr目录,2表示出错的时候将错误信息写入bak.error
cp -R /usr /usr.bak 2> /bak.error
ls -l /tmp > /tmp.msg  # 结果保存至tmp.msg文件 (>输出重定向)
date >> /tmp.msg       # 在tmp.msg文件中追加时间
wall < /tmp.msg        # 从文件进行广播(输入重定向)

##
#【管道】将一个命令的输出传送给另一个命令,作为另一个命令的输入
# 命令1|命令2|命令3……|命令N
ls -l /etc | more        # 命令1显示结果 | 对命令1分页
ls -l /etc | grep init   # 命令1显示结果 | 包含init关键词的行列出来
# 命令1显示结果 | 对命令1包含init关键词的行列出来 | 对命令2统计行数
ls -l /etc | grep init | wc -l

##
#【;】可以用分号分隔各命令,命令将按顺序执行

##
#【&&】&&前边的命令执行成功,才执行后边的命令

##
#【||】&&前边的命令执行失败,才执行后边的命令

# 命令替换符
ls -l `which touch`   # ls列出`which touch`结果

# 挂载光驱
mkdir /mnt/cdrom              # 生成目录
mount /dev/cdrom /mnt/cdrom   # 挂载光驱

 

标签:  Linux  MYSQL