zoukankan      html  css  js  c++  java
  • linux常用命令

    一 启动项管理

    1 /etc/init.d文件夹

    /etc/init.d是/etc/rc.d/init.d文件夹的软链接,这个文件夹的主要作用是在该目录下寻找服务脚本,并且根据脚本的run level确定不同的启动等级。即本质上,该文件夹内是各种各样的shell脚本。

    CentOS和Ubuntu,需要在两个版本中都可以开机启动服务。但Ubuntu没有 /etc/rc.d/init.d这个目录,所以,为了保持同一种服务在CentOS和Ubuntu使用的统一性,将服务脚本(注:服务脚本在两个不同版本中是不同的)都放在 /etc/init.d 目录下,最终达到的效果是相同的

    2 chkconfig命令

    检查、设置系统的各种服务,可以查询操作系统在每一个执行等级中会执行哪些系统服务,包括各类常驻服务。

    谨记chkconfig不是立即禁止或者激活一个服务,而是简单改变了符号连接。

    等级代号列表: 等级0表示:表示关机 等级1表示:单用户模式 等级2表示:无网络连接的多用户命令行模式 等级3表示:有网络连接的多用户命令行模式 等级4表示:不可用 等级5表示:带图形界面的多用户模式 等级6表示:重新启动

    二 字符串处理

    1 grep命令

    普通用法不用在意引号

    grep match_pattern file_name

    grep "match_pattern" file_name

    正则使用 grep –E 或者直接使用 egrep都可以

    2 shell echo命令

    显示变量输入与输出

    #!/bin/bash

    read name

    echo “$name is a test”

    显式换行

    echo -e "OK! "

    显式不换行

    echo -e "OK! c"

    echo "接上面"

    显示命令执行结果

    echo `date`

    3 shell printf命令

    printf使用类似于c的该函数

    4 shell test命令

    test命令用于检查某个条件是否成立,它可以进行数值,字符和文件三个方面的测试

    #!/bin/bash

    num1=100

    num2=100

    if test $num1 -eq $num2

    then

             echo "equal"

    else

             echo "not equal"

    fi

    5 sed命令

    1 -r

    表示扩展的正则匹配方式,其中的/之类的不用转义

    例子:echo ${_current_path} | sed -r "s#/root/(.*)/action.*#1#g"

    # 分隔符

    () 取值符,匹配所有

    1 第一个取值

    三 文件系统

    实例1:显示磁盘使用情况

    命令:

    df

    输出:

    [root@CT1190 log]# df

    文件系统               1K-块        已用     可用 已用% 挂载点

    /dev/sda7             19840892    890896  17925856   5% /

    /dev/sda9            203727156 112797500  80413912  59% /opt

    /dev/sda8              4956284    570080   4130372  13% /var

    /dev/sda6             19840892   1977568  16839184  11% /usr

    /dev/sda3               988116     23880    913232   3% /boot

    tmpfs                 16473212         0  16473212   0% /dev/shm

    linux中df命令的输出清单的第1列是代表文件系统对应的设备文件的路径名(一般是硬盘上的分区)

    最后一列是挂载点,表示的是一个目录

    linux就是把各种文件,包括磁盘分区之类的都往目录结构上进行挂载,linux默认有三个分区,即boot分区,swap分区和根分区,这些分区由对应的物理存储空间,但是需要目录结构来进行访问,故就分配了/boot等目录预支对应

    创建文件系统,命令是mkfs,在windows下通常叫格式化。创建文件系统这个操作一般针对的设备是分区,就是上文中说到的partition。当然也可以是某个文件,具体用法可以参见man mkfs。

    一个例子

    df -h

    /dev/mapper/VolGroup-lv_root   39G   17G   21G  44% /

    devtmpfs                      3.9G     0  3.9G   0% /dev

    tmpfs                         3.9G     0  3.9G   0% /dev/shm

    tmpfs                         3.9G  780K  3.9G   1% /run

    tmpfs                         3.9G     0  3.9G   0% /sys/fs/cgroup

    /dev/xvda1                    488M   34M  419M   8% /boot

    tmpfs                         782M     0  782M   0% /run/user/0

    [root@dbs_gauss1 ~]# fdisk -l

    Disk /dev/xvda: 42.9 GB, 42949672960 bytes, 83886080 sectors

    Units = sectors of 1 * 512 = 512 bytes

    Sector size (logical/physical): 512 bytes / 512 bytes

    I/O size (minimum/optimal): 512 bytes / 512 bytes

    Disk label type: dos

    Disk identifier: 0x00017f27

        Device Boot      Start         End      Blocks   Id  System

    /dev/xvda1   *        2048     1050623      524288   83  Linux

    /dev/xvda2         1050624    16777215     7863296   8e  Linux LVM

    /dev/xvda3        16777216    83886079    33554432   8e  Linux LVM

    Disk /dev/xvde: 429.5 GB, 429496729600 bytes, 838860800 sectors

    Units = sectors of 1 * 512 = 512 bytes

    Sector size (logical/physical): 512 bytes / 512 bytes

    I/O size (minimum/optimal): 512 bytes / 512 bytes

    Disk /dev/mapper/VolGroup-lv_root: 42.4 GB, 42404413440 bytes, 82821120 sectors

    Units = sectors of 1 * 512 = 512 bytes

    Sector size (logical/physical): 512 bytes / 512 bytes

    I/O size (minimum/optimal): 512 bytes / 512 bytes

    这里可以看到,/dev/xvda磁盘被分为了3个分区,其中/dev/xvda1是作为了/boot分区来使用的,作为整个linux的启动分区。而其他两个分区没有被使用到

    另一块磁盘/dev/mapper/VolGroup-lv_root作为了主硬盘,没有进行分区,直接挂载到了/根目录

    tmpfs文件系统,是一种基于内存的虚拟文件系统,一般挂载在目录/dev/shm下,载redhat中默认使用物理内存的一半

    分区

    明白三个概念:设备,分区,目录!

    在linux当中,每一个设备都是用/dev文件夹下的一个文件来进行表示的

    其中第一列的信息

    若是文件系统或者是分区信息时,格式为 /dev/xxyN:dev是表示设备目录,xxyN是分区名

    l  /dev/代表设备所在的目录名。因为分区在硬盘上,硬盘是设备。而/dev/之后的所有这些文件代表所有可能的分区

    l  xx分区名的前两个字符代表分区所在设备的类型,例如hd(IDE磁盘)或者sd(SCSI磁盘)

    l  y表明分区所在的设备的编号,例如/dev/had(第一个IDE磁盘)或/dev/sdb(第二个SCSI磁盘)

    l  N表示分区编号,主分区1~4(扩展分区只能有一个,即四个主分区中仅有一个能够成为扩展分区),逻辑分区从5开始(扩展分区由所有的逻辑分区构成,逻辑分区理论上可有无限多个)

    挂载

    挂载的本质就是将分区关联到某一个目录的过程

    一个目录的子目录可以被再次挂载到其他分区上

    linux和windows最大区别在于,linux中硬件就是硬件,路径就是路径,而后者则是混淆在一起的。

    动作

    1. 查看是否已经分配磁盘

    fdisk -l

    1. 如果有磁盘,则对磁盘建立分区

    fisk /dev/sdb

    1. 分区参数设置

    输入m查看帮助菜单

    输入p,设置为主分区

    输入1,设置为分区号

    直接回车,选择默认起始扇区

    直接回车,选择默认结尾扇区

    1. 保存分区

    输入w,保存分区设置

    1. 使用fdisk -l查看,确认分区建立成功
    2. 建立好分区之后,对分区进行格式化,建立文件系统

    mkfs.xfs -f /dev/sdb1

    1. 进行挂载

    mount /dev/sdb1 /home/data

    如果挂载点不存在,则需要先进行目录的创建

    1. 查看一下挂载是否成功

    df -TH /home/data

    1. 修改系统配置/etc/fstab,让系统启动后自动进行挂载,否则可能会掉盘,添加如下内容

    /dev/sdb1 /home/data xfs defaults 0 0

    四 权限管理

    1 添加用户

    useradd leichuang

    passwd 123456789

    2 查看文件权限

    getfacl

    查看文件的权限的详细信息

    stat:列出文件的详细信息

    stat -c %a /var/rds/tomcat/conf/server.p12

    600

    查看文件的权限,并且以校验数字码的方式进行输出

    3 sudo 配置

    http://blog.csdn.net/yu412346928/article/details/21622029

    当前用户临时切换到超级用户下,以超级用户的权限去执行指定的命令。sudo所需要输入执行sudo命令的用户自身的口令,而非root用户口令。这样,即使你偶尔离开,但终端依然不会被居心险恶的人利用。

    党用户执行sudo时,系统会去寻找/etc/sudoers配置文件,判断当前用户是否具备使用root的资格。对该配置的修改主要依靠命令visudo进行,其中的语法如下

    3.1 user host = commands

    user host = commands

    User_Alias

    Host_Alias

    Cmnd_Alias

    user表示使用者(这里也可以填入group名,在组名前加%),host是登录主机的方式,而commands是具体命令

    例如

    switf localhost = /usr/bin/emerge

    表示用户swift可以在本地(非ssh连接的情况下)使用emerge命令

    %wheel localhost = /usr/bin/emerge, /usr/bin/ebuild, /usr/sbin/emerge-webrsync

    标示wheel组同时具有3条命令的权限

    3.2 定义别名

    Host_Alias hostalias = hostname1, hostname2, ...

    User_Alias useralias = user1, user2, ...

    Cmnd_Alias cmndalias = command1, command2, ...

    为了不频繁输入各个用户名,可以定义一些别名

    通用别名ALL 代指所有可能的设置。

    代码 2.8: 允许任何用户在非ssh时执行 shutdown

    ALL  localhost = /sbin/shutdown

    代码 2.10: 用户与命令的别名

    User_Alias  SOFTWAREMAINTAINERS = swift, john, danny
    User_Alias  PASSWORDMAINTAINERS = swift, sysop
    Cmnd_Alias  SOFTWARECOMMANDS    = /usr/bin/emerge, /usr/bin/ebuild
    Cmnd_Alias  PASSWORDCOMMANDS    = /usr/bin/passwd [a-zA-Z0-9_-]*, !/usr/bin/passwd root
     
    SOFTWAREMAINTAINERS  localhost = SOFTWARECOMMANDS
    PASSWORDMAINTAINERS  localhost = PASSWORDCOMMANDS

    3.3 以其他非root用户命令执行权限语法

    让一名用户像其他用户(非root用户)那样地运行程序是可行的。这非常有趣,你可以使用另一个用户(譬如网络服务器apache)的身份来运行程序或执行一些系统管理操作(比如杀死僵死进程)。

    在/etc/sudoers文件中,在命令列表之前,可以在( 与 )之间列举需要改变身份的用户。

    代码 2.12: root用户命令执行权限示例

    Cmnd_Alias KILL = /bin/kill, /usr/bin/pkill
     
    swift   ALL = (apache, gorg) KILL

    使用这一设定,用户可以运行sudo -u来选择他想担当的角色

    代码 2.13: apache用户那样运行pkill

    $ sudo -u apache pkill apache

    可以使用Runas_Alias指令为这些要切换身份的用户设置别名,它的用法与前面所讲的别名设置指令的用法相似。

    3.4 密码与默认设置

    默认情况,sudo要求用户提供自己的登录口令来做身份验证。一旦输入了相应口令(密码),sudo会记忆它5分钟,用户要把任务集中在这段时间内来完成,否则就要每5分钟重复输入一次口令。

    当然,这种默认行为是可以改变的:可以在/etc/sudoers中设定Defaults:指令来修改一名用户的默认行为。

    例如,要将默认的5分钟修改为0分钟(即不记忆所输入口令):

    代码 2.14: 更改时限

    Defaults:swift  timestamp_timeout=0

    如果将timestamp_timeout设置为-1,sudo会永远记住用户口令,直至系统重新启动。

    有一个设置可以在使用sudo时要输入所执行命令的所属用户口令,而不是执行sudo命令的用户口令。这一功能可由runaspw指令进行设定。下面示例演示了runaspw的用法,同时也演示了重复输入口令次数限制的设定方法

    代码 2.15: 需要root口令而非用户john的口令

    Defaults:john   runaspw, passwd_tries=2

    还有一个有趣的功能是保持DISPLAY变量不变,这样就可以运行一些X Window工具了:

    代码 2.16: 保持DISPLAY变量的值不变

    Defaults:john env_keep=DISPLAY

    使用Defaults:指令可以更改许多默认设置,要知详情,可在sudo手册中搜索Defaults。

    如果很想允许一名用户使用sudo运行一些程序时无需输入任何口令,应当在命令列表前冠以NOPASSWD:,例如:

    代码 2.17: 允许像root那样使用emerge,而无需口令

    swift     localhost = NOPASSWD: /usr/bin/emerge

    3.5 查看当前用户关于sudo的权限

    列出权限

    运行sudo -l可以查看当前用户的sudo权限:

    代码 3.1: 列出权限

    $ sudo -l
    User swift may run the following commands on this host:
        (root)   /usr/libexec/xfsm-shutdown-helper
        (root)   /usr/bin/emerge
        (root)   /usr/bin/passwd [a-zA-Z0-9_-]*
        (root)   !/usr/bin/passwd root
        (apache) /usr/bin/pkill
        (apache) /bin/kill

    若在/etc/sudoers中设定了任何命令都不需要输入口令,那么在使用sudo -l时也不需要输入口令。否则,在口令未被sudo记忆时,依然要输入相应口令。

    3.6 延长口令时延

    延长口令时限

    默认情况下,sudo的验证口令会维持在5分钟内有效。如果用户想延长这一时间,可以运行sudo -v重设时间戳,这样就会又开始一个5分钟口令记忆时间。

    代码 3.2: sudo口令时限延长

    $ sudo -v

    相反,若要停掉当前时间戳,可使用sudo -k.

    一些注意事项

    # Defaults   env_keep += "HOME"

    注释此行的意思是,sudo运行某条命令时获取到的HOME路径是该用户自己本身的HOME路径

    always_set_home: Always set $HOME to the target user's home directory

  • 相关阅读:
    thinkphp5自定义sql排序
    php版雪花算法生产唯一ID 分库分表专用
    java和php保持一致的md5加密
    rabbitmq新版本使用
    pentaho-kettle+eclipse 搭建本地源码
    《我们好像在哪见过》
    《邂逅》-----徐志摩
    Oracle数据库查询和取出表中重复记录
    Kettle提取数据,数据库中文字符乱码问题
    kettle报错收集- java.sql.SQLException: Streaming result set com.mysql.jdbc.RowDataDynamic@160750a6 is still active
  • 原文地址:https://www.cnblogs.com/aguai1992/p/9341225.html
Copyright © 2011-2022 走看看