zoukankan      html  css  js  c++  java
  • liunxzzl

    我们先不说怎么写脚本,因为写shell脚本很灵活,只要懂了用touch命令创建日期文件或者使用mkdir创建日期文件夹就行

        mkdir `date +%Y%m%d`          生成一个年月日格式的文件夹

        mkdir `date +%Y-%m-%d`        生成一个年-月-日格式的文件夹

        touch `date +%Y%m%d`          生成一个年月日格式的文件

        touch `date +%Y-%m-%d`        生成一个年-月-日格式的文件

        如果想生成的文件或者文件夹更细化一下的话,

        利用date命令来获取时间,
        用到以下几个选项
        %Y表示年
        %m表示月
        %d表示日
        %H表示小时
        %M表示分钟
        %S表示秒
        %N表示纳秒

    查看liunx系统基本信息

    halt powerof 关机:

     linux下各文件夹的意义   

    /boot:引导文件存放目录,内核文件(vmlinuz)、引导加载器(bootloader, grub)都存放于此目录 /bin:所有用户使用的基本命令;不能关联至独立分区,OS启动即会用到的程序 /sbin:管理类的基本命令;不能关联至独立分区,OS启动即会用到的程序 /lib:启动时程序依赖的基本共享库文件以及内核模块文件(/lib/modules) /lib64:专用于x86_64系统上的辅助共享库文件存放位置 /etc:配置文件目录 /home/USERNAME:普通用户家目录 /root:管理员的家目录 /media:便携式移动设备挂载点 /mnt:临时文件系统挂载点 /dev:设备文件及特殊文件存储位置 b: block device,随机访问 c: character device,线性访问 /opt:第三方应用程序的安装位置 /srv:系统上运行的服务用到的数据 /tmp:临时文件存储位置 /usr: universal shared, read-only data bin: 保证系统拥有完整功能而提供的应用程序 sbin: lib:32位使用 lib64:只存在64位系统 include: C程序的头文件(header files) share:结构化独立的数据,例如doc, man等 local:第三方应用程序的安装位置 bin, sbin, lib, lib64, etc, share /var: variable data files cache: 应用程序缓存数据目录 lib: 应用程序状态信息数据 local:专用于为/usr/local下的应用程序存储可变数据 lock: 锁文件 log: 日志目录及文件 opt: 专用于为/opt下的应用程序存储可变数据 run: 运行中的进程相关数据,通常用于存储进程pid文件 spool: 应用程序数据池 tmp: 保存系统两次重启之间产生的临时数据 /proc: 用于输出内核与进程信息相关的虚拟文件系统 /sys:用于输出当前系统上硬件设备相关信息虚拟文件系统 /selinux: security enhanced Linux,selinux相关的安全策略等信息的存储位置

    lscpu cpu查看    free -h 内存查看    lsblk 硬盘查看   

    ll /etc/localtime 时区:

    init 3 关闭可视化窗口     init 6 重启     reboot 重启

    host name -i 查看 ip             ip addr show 查看网卡

    uname -r 查看内核

    cat /etc/redhat-release 查看操作系统

     cat /root/.bashrc 别名修改

    cat /etc/profile  环境变量  gedit /etc/profile

     
     

    cat /etc/selinux/config seliux      SELINUX=disabled 禁用   SELINUX=enforcing    执行   关闭SELinux的两种方法

     

    cat /etc/sysconfig/network-scripts/ifcfg-eth0   ifcfg-ens33     网卡设置          ifcfg-ens33

    硬盘分区

    硬盘分区
    分区1      /                   100G   
    分区2     /data              50G 存数据 例如数据库数据
    分区3     swap               内存的2倍  内存大于8g就和内存值一样 
    分区4    /boot                存放内核 一般  1G
    

     软件启动

    systemctl status httpd
    systemctl stop httpd
     systemctl start httpd
    systemctl enable httpd
    systemctl disable httpd
    在不改变状态的条件下重新加载防火墙
    firewall-cmd --reload 
    yum install firewalld systemd -y
    systemctl status firewalld
    systemctl start firewalld.service
    systemctl stop firewalld.service
    systemctl enable firewalld.service
    systemctl disable firewalld.service
    firewall-cmd --reload 
    netstat -anp
    firewall-cmd --query-port=8080/tcp
    ps -ef | grep tomcat 
    查看挂载状态
    service network restartdf -h 重新挂载系统分区 -o mount -a cd /etc/yum.repos.d/
    
    

      

    tty 查看当前的终端设备

    echo ${SHELL}  显示当前使用的shell

    cat /etc/shells  显示当前使用的shell

    #hostname bj-yz-k8s-node1-100-10.magedu.com  设置主机名

    # 管理员 $ 普通用户

    ]#echo $PS1          显示提示符格式        [e[1;35m][u@h W]$[e[0m] 

    PS1="[e[1;5;41;33m][u@h W]\$[e[0m]"    修改提示符格式范例     提示符格式说明: e 控制符33 u 当前用户 h 主机名简称 H 主机名 w 当前工作目录 W 当前工作目录基名 24小时时间格式 T 12小时时间格式 ! 命令历史数 # 开机后命令历史数

    PS1=PS1="[e[1;32m][ [e[1;33m]u[e[35m]@h[e[1;31m] W  

    [e[1;32m]][e[0m]\$"

    shell中可执行的两类命令  内部命令:由shell自带的,而且通过某命令形式提供 外部命令:在文件系统路径下有对应的可执行程序文件

    type COMMAND  type -a echo   范例: 查看是否存在对应内部和外部命令

    help 内部命令列表 enable 管理内部命令 enable cmd 启用内部命令 enable –n cmd 禁用内部命令 enable –n 查看所有禁用的内部命令

    alias NAME='VALUE'

    echo "alias free='free -h'" >> /root/.bashrc

    仅对当前用户:~/.bashrc

    对所有用户有效:bashrc

    ALIASNAME

    source /path/to/confi 编辑配置给出的新配置不会立即生效,bash进程重新读取配置文件

    id -u wang

    whoami: 显示当前登录有效用户 who: 系统当前所有的登录会话 w: 系统当前所有的登录会话及所做的操作  用户登录信息查看命令

    #yum -y install screen  利用screen 可以实现会话管理,如:新建会话,共享会话等

    yum install tmux Tmux 是一个终端复用器(terminal multiplexer),类似 screen,但是更易用,也更强大

    echo     [-neE][字符串]    echo 命令可以将后面跟的字符进行输出 功能:显示字符,echo会将输入的字符串送往标准输出。输出 的字符串间以空白字符隔开, 并在最后加上换行号 语法:

    选项: -E (默认)不支持 解释功能 -n 不自动换行 -e 启用 字符的解释功能

    显示变量 启用命令选项-e,若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出 a 发出警告声  退格键 c 最后不加上换行符号 e escape,相当于33 换行且光标移至行首 回车,即光标移至行首,但不换行 插入tab 插入字符 nnn 插入nnn(八进制)所代表的ASCII字符 xHH插入HH(十六进制)所代表的ASCII数字(man 7 ascii)

    echo -e '33[43;31;5mmagedue[0m'

    echo "This system's name is $(hostname) "

    echo "i am `whoami` "

    把一个命令的输出打印给另一个命令的参数 范例:. $(CMD) 或 `CMD`

    echo file{1,3,5}  2 括号扩展:{ }  {} 可以实现打印重复字符串的简化形式

    history  命令行历史  -c: 清空命令历史 -d offset: 删除历史中指定的第offset个命令 n: 显示最近的n条历史 -a: 追加本次会话新执行的命令历史列表至历史文件 echo file{1,3,5} 结果为:file1 file3 file5 rm -f file{1,3,5} echo {1..10} echo {a..z} echo {000..20..2} history [-c] [-d offset] [n] history -anrw [filename] history -ps arg [arg...] -r: 读历史文件附加到历史列表 -w: 保存历史列表到指定的历史文件 -n: 读历史文件中未读过的行到历史列表 -p: 展开历史参数成多行,但不存在历史列表中 -s: 展开历史参数成一行,附加在历史列表后

     持久保存变量    以上变量可以 export 变量名="值" 形式存放在 /etc/profile 或 ~/.bash_profile

    PATH=$PATH:$HOME/bin
    export PATH
    export HISTCONTROL=ignoreboth
    export HISTTIMEFORMAT="%
    

     调用命令行历史 #重复前一个命令方法 重复前一个命令使用上方向键,并回车执行 按 !! 并回车执行 输入 !-1 并回车执行 按 Ctrl+p 并回车执行 !:0 执行前一条命令(去除参数)

    1.13 bash的快捷键
    Ctrl + l 清屏,相当于clear命令 Ctrl + o 执行当前命令,并重新显示本命令 Ctrl + s 阻止屏幕输出,锁定
    Ctrl + q 允许屏幕输出 Ctrl + c 终止命令 Ctrl + z 挂起命令 Ctrl + a 光标移到命令行首,相当于Home
    Ctrl + e 光标移到命令行尾,相当于End Ctrl + f 光标向右移动一个字符 Ctrl + b 光标向左移动一个字符
    Alt + f 光标向右移动一个单词尾 Alt + b 光标向左移动一个单词首 Ctrl + xx 光标在命令行首和光标之间
    移动 Ctrl + u 从光标处删除至命令行首 Ctrl + k 从光标处删除至命令行尾 Alt + r 删除当前整行 Ctrl + w
    从光标处向左删除至单词首 Alt + d 从光标处向右删除至单词尾 Ctrl + d 删除光标处的一个字符 Ctrl + h
    删除光标前的一个字符 Ctrl + y 将删除的字符粘贴至光标后 Alt + c 从光标处开始向右更改为首字母大写
    的单词 Alt + u 从光标处开始,将右边一个单词更改为大写 Alt + l 从光标处开始,将右边一个单词更改
    为小写 Ctrl + t 交换光标处和之前的字符位置 Alt + t 交换光标处和之前的单词位置 Alt + # 提示输入指
    定字符后,重复显示该字符#次 注意:Alt组合快捷键经常和其它软件冲突

    man命令 man 提供命令帮助的文件,手册页存放在/usr/share/man 几乎每个命令都有man的“页面” 中文man需安装包man-pages-zh-CN man页面分组为不同的“章节”,统称为Linux手册,man 1 man 1:用户命令 2:系统调用 3:C库调用 4:设备文件及特殊文件 5:配置文件格式 6:游戏 7:杂项 8:管理类的命令 9:Linux 内核API man命令的配置文件:

    2.6 Linux 安装提供的本地文档获取帮助 Applications -> documentation->help(centos7) System->help(centos6) 2.7 命令自身提供的官方使用指南 /usr/share/doc目录 多数安装了的软件包的子目录,包括了这些软件的相关原理说明 常见文档:README INSTALL CHANGES 不适合其它地方的文档的位置 配置文件范例 HTML/PDF/PS 格式的文档 授权书详情 2.8 系统及第三方应用官方文档 2.8.1通过在线文档获取帮助 http://httpd.apache.org http://www.nginx.org https://mariadb.com/kb/en https://dev.mysql.com/ doc/ http://tomcat.apache.org http://www.python.org 2.8.2 红帽知识库和官方在线文档 通过发行版官方的文档光盘或网站可以获得安装指南、部署指南、虚拟化指南等 http://kbase.redhat.com http://www.redhat.com/docs http://access.redhat.com https://help.ub untu.com/lts/serverguide/index.html 2.8.3 红帽全球技术支持服务 rhn.redhat.com或者本地卫星服务器/代理服务器 RHN账户为及其注册和基于网络管理的RHN用户 sosreport 收集所有系统上的日志信息的工具,并自动打成压缩包,方便技术支持人员和红帽全球支持 提供分析问题依据 2.9 网站和搜索 http://tldp.org http://www.slideshare.net http://www.google.com Openstack filetype:pdf rhca site:redhat.com/docs

      

    CentOS 7 以后版本目录结构变化 /bin 和 /usr/bin /sbin 和 /usr/sbin /lib 和/usr/lib /lib64 和 /usr/lib64

    1.3 应用程序的组成部分 二进制程序:/bin, /sbin, /usr/bin, /usr/sbin, /usr/local/bin, /usr/local/sbin 库文件:/lib, /lib64, /usr/lib, /usr/lib64, /usr/local/lib, /usr/local/lib64 配置文件:/etc, /etc/DIRECTORY, /usr/local/etc 帮助文件:/usr/share/man, /usr/share/doc, /usr/local/share/man, /usr/local/share/doc

    1.4 Linux下的文件类型
    - 普通文件
    d 目录文件
    b 块设备
    c 字符设备
    l 符号链接文件
    p 管道文件pipe
    s 套接字文件socket
    

      ls -l /run/

    基名:basename,只取文件名而不要路径 目录名:dirname,只取路径,不要文件名

    切换至父目录: cd .. 切换至当前用户主目录: cd 切换至以前的工作目录: cd -

    命令 cd : change directory 改变目录 选项:-P 切换至物理路径,而非软链接目录

    相关的环境变量: PWD:当前目录路径 OLDPWD:上一次目录路径

    ls 命令可以列出当前目录的内容或指定目录
    -a 包含隐藏文件
    -l 显示额外的信息
    -R 目录递归
    -ld 目录和符号链接信息
    -1 文件分行显示
    -S 按从大到小排序
    -t 按mtime排序
    -u 配合-t选项,显示并按atime从新到旧排序
    -U 按目录存放顺序显示
    -X 按文件后缀排序
    

      

     查看文件状态 stat
    文件相关信息:metadata, data
    每个文件有三个时间戳:
    access time 访问时间,atime,读取文件内容
    modify time 修改时间,mtime,改变文件内容(数据)
    change time 改变时间,ctime,元数据发生改变
    

      

    file [options] <filenam
    文件可以包含多种类型的数据,使用file命令检查文件的类型,然后确定适当的打开命令或应用程序使
    用
    -b 列出文件辨识结果时,不显示文件名称
    -f filelist 列出文件filelist中文件名的文件类型
    -F 使用指定分隔符号替换输出文件名后默认的”:”分隔符
    -L 查看对应软链接对应文件的文件类型
    ls [options] [files_or_dirs]
    [root@centos8 ~]#stat /etc/passwd
    File: /etc/passwd
    Size: 1306 Blocks: 8 IO Block: 4096 regular file
    Device: 802h/2050d Inode: 134792556 Links: 1
    Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
    Access: 2019-12-09 20:37:12.830991350 +0800
    Modify: 2019-12-09 20:37:12.826991351 +0800
    Change: 2019-12-09 20:37:12.826991351 +0800
    Birth: -
    file [options] <filename>...
    --help 显示命令在线帮助
     确定文件内容
    

      

    #显示编码列表
    [15:34:50 root@centos8 ~]#iconv -l
    #将windows10上文本默认的编码转换成UTF-8
    [15:34:50 root@centos8 ~]#iconv -f gb2312 win.txt -o win2.txt
    [15:34:50 root@centos8 ~]#file linux.txt
    linux.txt: ASCII text
    [15:34:31 root@centos8 ~]#file windows.txt
    windows.txt: ASCII text, with CRLF line terminators
    #将windows的文本格式转换成Linux的文本格式
    [15:35:26 root@centos8 ~]#dos2unix windows.txt
    dos2unix: converting file windows.txt to Unix format...
    [15:36:00 root@centos8 ~]#file windows.txt
    windows.txt: ASCII text
    #将Linux的文本格式转换成windows的文本格式
    [15:36:02 root@centos8 ~]#unix2dos windows.txt
    unix2dos: converting file windows.txt to DOS format...
    [15:36:10 root@centos8 ~]#file windows.txt
    windows.txt: ASCII text, with CRLF line terminators
    [15:33:05 root@centos8 ~]#cat list.txt
    /etc/
    /bin
    /etc/issue
    [15:34:28 root@centos8 ~]#file -f list.txt
    /etc/: directory
    /bin: symbolic link to usr/bin
    /etc/issue: ASCII text
    

      

    文件通配符模式 wildcard pattern
    

      

     touch命令可以用来创建空文件或刷新文件的时间

    选项说明:
    -a 仅改变 atime和ctime
    -m 仅改变 mtime和ctime
    -t [[CC]YY]MMDDhhmm[.ss] 指定atime和mtime的时间戳
    -c 如果文件不存在,则不予创建
    

      #touch `date -d "-1 day" +%F_%T`.log

    #touch $(date -d "1 year" +%F_%T).log

    ls 2019-12-12_16:11:48.log 2020-12-1

    复制文件和目录

    常用选项
    -i 覆盖前提示
    -n 不覆盖,注意两者顺序
    -r, -R 递归复制目录及内部的所有内容
    -a 归档,相当于-dR --preserv=all
    -d --no-dereference --preserv=links 不复制原文件,只复制链接名
    --preserv[=ATTR_LIST]
     mode: 权限
     ownership: 属主属组
     timestamp:
     links
     xattr
     context
     all
    -p 等同--preserv=mode,ownership,timestamp
    -v --verbose
    -f --force
    -u --update 只复制源比目标更新文件或目标不存在的文件
    -b 目标存在,覆盖前先备份,形式为 filename~
    --backup=numbered 目标存在,覆盖前先备份加数字后缀
    

      cp -av /etc/ /data/backup`date +%F`

    cp -a /root /data/rootdir

    移动和重命名文件

    常用选项:
    -i 交互式
    -f 强制
    -b 目标存在,覆盖前先备份
    利用rename 可以批量修改文件名
    #为所有的conf文件加上.bak后缀:
    rename 'conf' 'conf.bak' f*
    #去掉所有的bak后缀:
    rename '.bak' '' *.bak
    

      

    1 删除文件
    /
    范例:
    范例:删除特殊文件
    rm虽然删除了文件,但是被删除的文件仍然可能被恢复,在安全要求较高的场景下,可以使用shred安
    全删除文件
    格式
    常见选项:
    -z 最后一次覆盖添加0,以隐藏覆盖操作
    -v 能够显示操作进度
    -u 覆盖后截断并删除文件
    -n # 指定覆盖文件内容的次数(默认值是3次)
    范例:
    #为所有的conf文件加上.bak后缀:
    rename 'conf' 'conf.bak' f*
    #去掉所有的bak后缀:
    rename '.bak' '' *.bak
    rm
    rm -rf /*
    #将名为 “/data/-f” 的文件删除
    rm -f -f 此方式错误
    rm -- -f
    rm ./-f
    rm /data/-f
    rm虽然删除了文件,但是被删除的文件仍然可能被恢复,在安全要求较高的场景下,可以使用shred安
    全删除文件
    

      shred [OPTION]... FILE...

    常见选项: -z 最后一次覆盖添加0,以隐藏覆盖操作 -v 能够显示操作进度 -u 覆盖后截断并删除文件 -n # 指定覆盖文件内容的次数(默认值是3次)

    [root@centos8 ~]#shred -zvun 5 passwords.txt
    shred: passwords.txt: pass 1/6 (random)...
    shred: passwords.txt: pass 2/6 (000000)...
    shred: passwords.txt: pass 3/6 (random)...
    shred: passwords.txt: pass 4/6 (ffffff)...
    shred: passwords.txt: pass 5/6 (random)...
    

      tree

    常见选项:
    -d: 只显示目录
    -L level:指定显示的层级数目
    -P pattern: 只显示由指定wild-card pattern匹配到的路径
    2.12.2 创建目录mkdir
    常见选项:
    -p: 存在于不报错,且可自动创建所需的各目录
    -v: 显示详细信息
    -m MODE: 创建目录时直接指定权限
    2.11.3 删除空目录rmdir
    常见选项:
    -p 递归删除父空目录
    -v 显示详细信息
    注意:rmdir只能删除空目录,如果想删除非空目录,可以使用rm -r 命令,递归删除目录树

    alias rm='DIR=/data/backup`date +%F%T`;mkdir $DIR;mv -t $DIR'

    mv和inode 如果mv命令的目标和源在相同的文件系统,作为mv 命令 用新的文件名创建对应新的目录项 删除旧目录条目对应的旧的文件名 不影响inode表(除时间戳)或磁盘上的数据位置:没有数据被移动! 如果目标和源在一个不同的文件系统, mv相当于cp和rm

    #df -i /boot

    2.1标准输出和错误重新定向

    &> 覆盖重定向&>> 追加重定向

    ll &>>zzl   

    echo zzl &>>zzl

     tr 命令

    选项: -c –C --complement:取字符集的补集 -d --delete:删除所有属于第一字符集的字符 -s --squeeze-repeats:把连续重复的字符以单独一个字符表示,即去重 -t --truncate-set1:将第一个字符集对应字符转化为第二字符集对应的字符[:alnum:]:字母和数字[:alpha:]:字母[:digit:]:数字[:lower:]:小写字母[:upper:]:大写字母[:space:]:空白字符[:print:]:可打印字符[:punct:]:标点符号[:graph:]:图形字符[:cntrl:]:控制(非打印)字符[:xdigit:]:十六进制字符范例:范例:tr[OPTION]...SET1[SET2]#该命令会把/etc/issue中的小写字符都转换成大写字符tr‘a-z’‘A-Z’</etc/issue#删除fstab文件中的所有abc中任意字符tr–dabc</etc/fstab
    

      #该命令会把/etc/issue中的小写字符都转换成大写字符tr‘a-z’‘A-Z’</etc/issue#删除fstab文件中的所有abc中任意字符tr–dabc</etc/fstab

     -c –C --complement:取字符集的补集 -d --delete:删除所有属于第一字符集的字符 -s --squeeze-repeats:把连续重复的字符以单独一个字符表示,即去重 -t --truncate-set1:将第一个字符集对应字符转化为第二字符集对应的字符[:alnum:]:字母和数字[:alpha:]:字母[:digit:]:数字[:lower:]:小写字母[:upper:]:大写字母[:space:]:空白字符[:print:]:可打印字符[:punct:]:标点符号[:graph:]:图形字符[:cntrl:]:控制(非打印)字符[:xdigit:]:十六进制字符
    

       cat zzl | tr 'a-z' 'A-Z'

    Authentication:认证,验证用户身份 Authorization:授权,不同的用户设置不同权限 Accouting|Audition:审计

    Linux中每个用户是通过User Id (UID)来唯一标识的。

    管理员:root, 0

    普通用户:1-60000 自动分配

    系统用户:1-499 (CentOS 6以前), 1-999 (CentOS7以后) 对守护进程获取资源进行权限分配

    登录用户:500+ (CentOS6以前), 1000+(CentOS7以后) 给用户进行交互式登录使用

    普通组:500+(CentOS 6以前), 1000+(CentOS7以后), 给用户使用

    用户的主要组(primary group):用户必须属于一个且只有一个主组,默认创建用户时会自动创建 和用户名同名的组,做为用户的主要组,由于此组中只有一个用户,又称为私有组

    用户的附加组(supplementary group): 一个用户可以属于零个或多个辅助组

    Linux安全上下文Context:运行中的程序,即进程 (process),以进程发起者的身份运行,进程所能够 访问资源的权限取决于进程的运行者的身份

    cat /etc/  shadow

    /etc/passwd:用户及其属性信息(名称、UID、主组ID等) /etc/shadow:用户密码及其相关属性 /etc/group:组及其属性信息 /etc/gshadow:组密码及其相关属性

    passwd文件格式 [root@centos8 ~]#id postfix uid=89(postfix) gid=89(postfix) groups=89(postfix),12(mail) [wang@centos8 ~]$cat /etc/shadow cat: /etc/shadow: Permission denied [root@centos8 ~]#cat /etc/shadow root:$6$zsrWEC56PrKifAEz$hylCuGySe.H6l6O2MRvbtqy/VZgnZbau.y57dE85.YHq03MTJVV4UvQ VIDcYA1IJzbgpWE0vTU.BtPHLbNBNn0:18246:0:99999:7::: bin:*:18027:0:99999:7::: daemon:*:18027:0:99999:7::: adm:*:18027:0:99999:7::: lp:*:18027:0:99999:7::: login name:登录用名(wang) passwd:密码 (x) UID:用户身份编号 (1000) GID:登录默认所在组编号 (1000) GECOS:用户全名或注释 home directory:用户主目录 (/home/wang) shell:用户默认使用shell (/bin/bash)

    shadow文件格式 登录用名 用户密码:一般用sha512加密 从1970年1月1日起到密码最近一次被更改的时间 密码再过几天可以被变更(0表示随时可被变更) 密码再过几天必须被变更(99999表示永不过期) 密码过期前几天系统提醒用户(默认为一周) 密码过期几天后帐号会被锁定 从1970年1月1日算起,多少天后帐号失效 更改密码加密算法:

    authconfig --passalgo=sha256 --update

    密码的安全策略 足够长 使用数字、大写字母、小写字母及特殊字符中至少3种 使用随机密码 定期更换,不要使用最近曾经使用过的密码

    group文件格式 群组名称:就是群组名称 群组密码:通常不需要设定,密码是被记录在 /etc/gshadow GID:就是群组的 ID 以当前组为附加组的用户列表(分隔符为逗号)

    gshdow文件格式 群组名称:就是群的名称 群组密码: 组管理员列表:组管理员的列表,更改组密码和成员 以当前组为附加组的用户列表:多个用户间用逗号分隔

    文件操作 vipw和vigr pwck和grpck

    用户和组管理命令

    用户管理命令

    useradd usermod userdel

    组帐号维护命令

    groupadd groupmod groupdel

    用户创建 useradd 命令可以创建新的Linux用户  useradd [options] LOGIN

    常见选项:
    -u UID
    -o 配合-u 选项,不检查UID的唯一性
    -g GID 指明用户所属基本组,可为组名,也可以GID
    -c "COMMENT“ 用户的注释信息
    -d HOME_DIR 以指定的路径(不存在)为家目录
    -s SHELL 指明用户的默认shell程序,可用列表在/etc/shells文件中
    -G GROUP1[,GROUP2,...] 为用户指明附加组,组须事先存在
    -N 不创建私用组做主组,使用users组做主组
    -r 创建系统用户 CentOS 6之前: ID<500,CentOS 7以后: ID<1000
    -m 创建家目录,用于系统用户
    -M 不创建家目录,用于非系统用户
    

      useradd -r -u 48 -g apache -s /sbin/nologin -d /var/www -c "Apache" apache

    useradd 命令默认值设定由/etc/default/useradd定义

    cat /etc/default/useradd

    显示或更改默认设置

    useradd -D
    useradd –D -s SHELL
    useradd –D –b BASE_DIR
    useradd –D –g GROU

    新建用户的相关文件

    /etc/default/useradd
    /etc/skel/*
    /etc/login.defs

    新建用户的相关文件

    /etc/default/useradd
    /etc/skel/*
    /etc/login.defs

    批量创建用户

    newusers passwd格式文件

    批量修改用户口令

    echo username:passwd | chpasswd

    用户属性修改

    usermod 命令可以修改用户属性

    usermod [OPTION] login

    常见选项:
    -u UID: 新UID
    -g GID: 新主组
    -G GROUP1[,GROUP2,...[,GROUPN]]]:新附加组,原来的附加组将会被覆盖;若保留原有,则要同时
    使用-a选项
    -s SHELL:新的默认SHELL
    -c 'COMMENT':新的注释信息
    -d HOME: 新家目录不会自动创建;若要创建新家目录并移动原家数据,同时使用-m选项
    -l login_name: 新的名字
    -L: lock指定用户,在/etc/shadow 密码栏的增加 !
    -U: unlock指定用户,将 /etc/shadow 密码栏的 ! 拿掉
    -e YYYY-MM-DD: 指明用户账号过期日期
    -f INACTIVE: 设定非活动期限

    删除用户

    userdel 可删除Linux 用户

    userdel [OPTION]... Login

    常见选项: -f, --force 强制 -r, --remove 删除用户家目录和邮箱

    查看用户相关的ID信息 id 命令可以查看用户的UID,GID等信息

    id [OPTION]... [USER]

    常见选项:
    newusers passwd格式文件
    echo username:passwd | chpasswd
    usermod [OPTION] login
    userdel [OPTION]... Login
    id [OPTION]... [USER]
    -u: 显示UID
    -g: 显示GID
    -G: 显示用户所属的组的ID
    -n: 显示名称,需配合ugG使用

    切换用户或以其他用户身份执行命令

    su: 即switch user,命令可以切换用户身份,并且以指定用户的身份执行命令

    su [options...] [-] [user [args...]]

    切换用户的方式:

    su UserName:非登录式切换,即不会读取目标用户的配置文件,不改变当前工作目录

    su - UserName:登录式切换,会读取目标用户的配置文件,切换至家目录,完全切换

    说明:root su至其他用户无须密码;非root用户切换时需要密码

    换个身份执行命令:

    su [-] UserName -c 'COMMAND'

    [wang@centos8 ~]$su - root -c "getent shadow

    常见选项: -l --login su -l UserName 相当于 su - UserName

    常见选项: -l --login su -l UserName 相当于 su - UserName

    常见选项: -l --login su -l UserName 相当于 su - UserName

    3.6 设置密码 passwd 可以修改用户密码

    格式:
    常用选项:
    -d:删除指定用户密码
    -l:锁定指定用户
    -u:解锁指定用户
    -e:强制用户下次登录修改密码
    -f:强制操作
    -n mindays:指定最短使用期限
    -x maxdays:最大使用期限
    -w warndays:提前多少天开始警告
    -i inactivedays:非活动期限
    --stdin:从标准输入接收用户密码
    范例:
    su [options...] [-] [user [args...]]
    su [-] UserName -c 'COMMAND'
    [wang@centos8 ~]$su - root -c "getent shadow"
    passwd [OPTIONS] UserName

    echo "PASSWORD" | passwd --stdin USERNAME

    修改用户密码策略

    chage 可以修改用户密码策略

    chage [OPTION]... LOGIN

    常见选项:
    -d LAST_DAY
    -m --mindays MIN_DAYS
    -M --maxdays MAX_DAYS
    -W --warndays WARN_DAYS
    -I --inactive INACTIVE 密码过期后的宽限期
    -E --expiredate EXPIRE_DATE 用户的有效期
    -l 显示密码策略
    范例:
    3.8 用户相关的其它命令
    chfn 指定个人信息
    chsh 指定shell
    finger 可看用户个人信息
    范例:
    chage [OPTION]... LOGIN
    [root@centos8 ~]#chage -m 3 -M 42 -W 14 -I 7 -E 2020-10-10 wang
    [root@centos8 ~]#chage -l wang
    Last password change : Dec 18, 2019
    Password expires : Jan 29, 2020
    Password inactive : Feb 05, 2020
    Account expires : Oct 10, 2020
    Minimum number of days between password change : 3
    Maximum number of days between password change : 42
    Number of days of warning before password expires : 14
    [root@centos8 ~]#getent shadow wang
    wang:$6$82L7A37XJgzKTegH$lFzqrMHmFwW740U32bvWHUuakPDKOiULE/CxcyDzSe1qi1X2ALulDw1
    WYrhd2wE00.lWO0im5//7biyV.juk5.:18248:3:42:14:7:18545:
    #下一次登录强制重设密码
    [root@centos8 ~]#chage -d 0 wang
    [root@centos8 ~]#getent shadow wang
    wang:$6$82L7A37XJgzKTegH$lFzqrMHmFwW740U32bvWHUuakPDKOiULE/CxcyDzSe1qi1X2ALulDw1
    WYrhd2wE00.lWO0im5//7biyV.juk5.:0:3:42:14:7:18545:
    [root@centos8 ~]#chage -l wang
    Last password change : password must be changed
    Password expires : password must be changed
    Password inactive : password must be changed
    Account expires : Oct 10, 2020
    Minimum number of days between password change : 3
    Maximum number of days between password change : 42
    Number of days of warning before password expires : 14
    [root@centos8 ~]#getent shadow wang
    wang:$6$82L7A37XJgzKTegH$lFzqrMHmFwW740U32bvWHUuakPDKOiULE/CxcyDzSe1qi1X2ALulDw1
    WYrhd2wE00.lWO0im5//7biyV.juk5.:0:3:42:14:7:18545:

    paste 合并多个文件同行号的列到一行 格式 -d 分隔符:指定分隔符,默认用TAB -s : 所有行合成一行显示

    paste -s title.txt emp.txt

    wc story.txt 39     237    1901 story.txt 行数   单词数   字节数

    tail [参数] [文件]
    -f 循环读取
    -q 不显示处理信息
    -v 显示详细的处理信息
    -c<数目> 显示的字节数
    -n<行数> 显示文件的尾部 n 行内容
    --pid=PID 与-f合用,表示在进程ID,PID死掉之后结束
    -q, --quiet, --silent 从不输出给出文件名的首部
    -s, --sleep-interval=S 与-f合用,表示在每次反复的间隔休眠S秒
    

      

    Crontab 定时

    • 添加或更新crontab中的命令
    crontab -e

    • 查看当前系统登录用户的Crontab命令集合
    crontab -l

    如何 添加/编辑 Crontab
    添加或更新crontab中的命令
    crontab -e
    默认情况下,系统会编辑当前登录用户的crontab命令集合。需要编辑其他用户的命令集合,需要使用到如下的命令
    
    crontab -u username -e
    查看Crontab命令集合
    查看当前系统登录用户的Crontab命令集合
    crontab -l
    查看其他用户的Crontab命令集合
    crontab -u username -l
    20个超实用的Crontab使用实例
    1.每天 02:00 执行任务
    
    0 2 * * * /bin/sh backup.sh
    2.每天 5:00和17:00执行任务
    
    0 5,17 * * * /scripts/script.sh
    3.每分钟执行一次任务
    通常情况下,我们并没有每分钟都需要执行的脚本(默默的想到了12306--)
    
      * * * * *  /scripts/script.sh
    4.每周日 17:00 执行任务
    
    0 17 * * sun  /scripts/script.sh
    5.每 10min 执行一次任务
    
    */10 * * * * /scripts/monitor.sh
    6.在特定的某几个月执行任务
    
      * * * jan,may,aug * /script/script.sh
    7.在特定的某几天执行任务
    
    0 17 * * sun,fri /script/scripy.sh
    在每周五、周日的17点执行任务
    
    8.在某个月的第一个周日执行任务
    
    0 2 * * sun  [ $(date +%d) -le 07 ] && /script/script.sh
    9.每四个小时执行一个任务
    
    0 */4 * * * /scripts/script.sh
    10.每周一、周日执行任务
    
    0 4,17 * * sun,mon /scripts/script.sh
    11.每个30秒执行一次任务
    我们没有办法直接通过上诉类似的例子去执行,因为最小的是1min。但是我们可以通过如下的方法。
    
      * * * * * /scripts/script.sh
      * * * * *  sleep 30; /scripts/script.sh
    12.多个任务在一条命令中配置
    
      * * * * * /scripts/script.sh; /scripts/scrit2.sh
    13.每年执行一次任务
    
    @yearly /scripts/script.sh
    @yearly 类似于“0 0 1 1 *”。它会在每年的第一分钟内执行,通常我们可以用这个发送新年的问候。
    
    14.系统重启时执行
    
    @reboot /scripts/script.sh
    15.将 Cron 结果重定向的特定的账户
    默认情况下,cron 只会将结果详情发送给 cron 被制定的用户。如果需要发送给其他用户,可以通过如下的方式:
    
      # crontab -l
      MAIL=bob
      0 2 * * * /script/backup.sh
    16.将所有的 cron 命令备份到文本文件当中
    这是一个当我们丢失了cron命令后方便快速的一个恢复方式。
    下面是利用这个方式恢复cron的一个小例子。(看看就行~)
    首先:检查当前的cron
    
    # crontab -l
    MAIL=rahul
    0 2 * * * /script/backup.sh
    然后:备份cron到文件中
    
    # crontab -l > cron-backup.txt
    # cat cron-backup.txt
    MAIL=rahul
    0 2 * * * /script/backup.sh
    接着:移除当前的cron
    
    # crontab -r
    # crontab -l
    no crontab for root
    恢复:从text file中恢复
    
    # crontab cron-backup.txt
    # crontab -l
    MAIL=rahul
    0 2 * * * /script/backup.sh
  • 相关阅读:
    软工_个人项目反(shai)思(zhao)
    软工_结对项目总结博客
    软工_个人博客作业3
    软工_个人博客作业2
    软工_个人博客作业1
    软工_个人项目总结博客
    [转]动态规划
    左式堆 优先级队列类模板 归并排序
    1038 约瑟夫环 循环单链表模拟
    链接表 List
  • 原文地址:https://www.cnblogs.com/zzl0916/p/13830880.html
Copyright © 2011-2022 走看看