zoukankan      html  css  js  c++  java
  • Linux基础命令

    文件拓展名

    在写文章之前先来介绍关于Linux的常识,在linux中,万物皆文件.所有的东西都是文件,包括命令、硬件和软件.Linux不靠扩展名区分文件,这些约定俗成的拓展名(.gz,.rpm,.html,.sh)只是一种标记. 和Windows不同,Windows中拓展名是为了给机器识别.而Linux中的拓展名是为了给人识别.

            硬件设备在Linux中对应的文件名如下图所示

    linux分区必须分的三个区

            根分区 /(挂载点根目录,根目录中要保存其他所有数据,根目录如果没有硬盘空间,根下的很多数据将没有地方存放) swap分区(交换分区,可理解为虚拟内存, 当真实内存不足时,可将swap分区中的硬盘空间作为内存使用,如果内存小于等于4GB,推荐swap分配内存的两倍,若内存大于4GB,建议swap空间与内存相等,不需要挂载点) 推荐分区: 启动分区,推荐200MB (挂载点/boot目录,/boot中存放了用于系统启动的相关数据,如果不单独分区,将会和根分区存放在同一个存储空间中,如果根分区写满将导致系统无法启动)

    起始符:
    [root@localhost ~]#
    root 当前登录用户
    localhost 主机名
    ~ 当前所在目录(家目录)
    # 超级用户的提示符

    ls命令

    ls -a 显示所有文件,包括隐藏文件
    ls -l 显示详细信息
    ls -d 查看目录属性
    ls -h 人性化显示文件大小
    ls -i 显示inode
    文件权限(10位),第一位为文件类型,后面每3位一组
    -rw-r--r--
    -文件类型(-文件 d目录 l软链接目录)
    rw- u所有者
    r-- g所属组
    r-- o其他人
    r读 w写 x执行

    lsof命令

    list open files

    yum install -y lsof     #如果没有需要安装
    
    lsof -p <PID>    #查看pid进程相关的文件

    PS命令

    ps -ef 显示出的结果

    UID       用户ID
    PID        进程ID
    PPID      父进程ID
    C           CPU占用率
    STIME     开始时间
    TTY         开始此进程的TTY----终端设备
    TIME       此进程运行的总时间
    CMD       命令名

    ps -aux 显示出的结果

    USER:用户名称
    PID:进程号
    %CPU:进程占用CPU的百分比
    %MEM:进程占用物理内存的百分比
    VSZ:进程占用的虚拟内存大小(单位:KB)
    RSS:进程占用的物理内存大小(单位:KB)
    TT:终端名称(缩写),若为?,则代表此进程与终端无关,因为它们是由系统启动的
    STAT:进程状态,其中S-睡眠,s-表示该进程是会话的先导进程,N-表示进程拥有比普通优先级更低的优先级,R-正在运行,D-短期等待,Z-僵死进程,T-被跟踪或者被停止等等
    STARTED:进程的启动时间
    TIME:CPU时间,即进程使用CPU的总时间
    COMMAND:启动进程所用的命令和参数,如果过长会被截断显示

    #按cpu升序排列
    ps aux --sort=+%cpu
    #按内存升序排列
    ps aux --sort=+rss

    ef和aux区别

    -ef是System V展示风格,而aux是BSD风格。

    COMMADN列如果过长,aux会截断显示,而ef不会

    总结ps

    如果想查看进程的CPU占用率和内存占用率,可以使用aux
    如果想查看进程的父进程ID和完整的COMMAND命令,可以使用ef

    df查看硬盘

    df -hl  #查看磁盘剩余空间
    df -h   #查看每个根路径的分区大小
    du -sh [目录名]  #返回该目录的大小
    du -sm [文件夹] #返回该文件夹总M数

    目录操作

    创建目录
    mkdir :建立目录(make directories)#创建文件为touch命令 mkdir
    -p [目录名]
    切换目录
    cd [目录] :切换目录(change directory)
    cd ~ :进入当前用户的家目录 cd - :进入上次目录 cd ..:进入上一级目录 cd . :进入当前目录
    pwd :查询所在目录位置(print working directory)
    rmdir [目录名] (remove empty directories) #只能删除空目录
    删除文件或目录
    rm -rf [文件或目录] (remove)
    选项 -r :删除目录
    选项 -f :强制
    rm [文件名] :提示是否删除
    rm -r [目录] :删除目录需加 -r ,目录中含有子文件,将持续询问是否删除
    rm -rf [目录] :删除目录, 不会询问是否删除而直接进行
    纯字符界面没有回收站。注意自杀指令:rm -rf /
    rm -rf /tmp/* :删除tmp目录下的内容
    rm -rf /tmp/  :删除tmp目录
    建议:删除文件或目录习惯使用命令 rm -rf [文件或目录]

    复制命令
    cp [选项] [原文件或目录] [目标目录] (copy)
    选项 -r :复制目录
    选项 -p :连带文件属性复制
    选项 -d :若原文件是链接文件,则复制链接属性
    选项 -a :相当于 -pdr 全选

    剪切或改名命令
    mv [原文件或目录] [目标目录] (move)
    mv olddir/ /targetdir/ 剪切目录时不需加 -r
    mv oldname newname 当原文件与目标目录,在同一目录下,则为改名命令

    系统目录

    一些常见的Linux目录
    bin:包含常用的用户命令,开入ls、sort、date和chmod。
    
    boot:包含可引导的Linux内核和引导装载(boot loader)配置文件(GRUB)
    
    dev:包含代表系统设备访问点的文件。这包括终端设备(tty*),软盘(fd*),硬盘(hd*),RAM(ram*)和CD-ROM(cd*)(用户通常通过设备文件直接访问这些设备)。
    
    etc:包含管理配置文件,启动脚本等,包含所有程序所需的配置文件,也包含了用于启动/停止单个程序的shell脚本。
    
    home:本地用户主(home)目录。
    
    lib系统库(libraries)文件包含支持位于/bin和/sbin下的二进制库文件。
    
    lost_found:在根目录下提供了一个遗失+查找(lost+found)系统,必须在root用户下可以查看当前目录下的内容。
    
    mnt:挂载(mounted)文件系统。临时安装目录,系统管理员可以挂载文件系统。
    
    proc:包含有关系统资源的信息。
    
    sbin:包含管理命令和守护进程。
    
    sys:一个类似proc的文件系统。包含的文件用于获得硬件状态并反映内核看到的系统设备树。它使用了proc很多帮助。

    链接

    ln(link):生成链接文件;
    ln -s [原文件] [目标文件]
    -s(soft):创建软链接
    不加-s创建的是硬链接
    硬链接和软链接
    硬链接:
    1、拥有相同的i(inode)节点和存储block块,可看做同一个文件;
    2、可通过i节点识别;
    3、不能跨分区;
    4、不能针对目录使用;5、删除一个另一个仍然能使用;(两个对象同时引用同一个内存,删除一个对象不影响内存)
    软链接:
    1、类似windows快捷方式;
    2、软件拥有自己的I节点和Block块,但是数据块中只保存原文件的文件名和I节点号,并没有实际的文件数据;
    3、lrwxrwxrwx	l 软链接;软链接文件权限都为rwxrwxrwx;
    4、修改任意文件,另一个文件都改变;
    5、删除原文件,软链接将不能使用;
    6、创建软链接的时,必须使用绝对路径;

    查找命令

    查看当前系统时间命令:date
    设置系统时间并同步到硬件:date -s "2018-11-12 18:30:50" &&hwclock --systohc

    文件名搜索命令 locate(比find快)
    相当于
    模糊查询
    locate是查询/var/lib/mlocate的数据库,这个数据库每天更新一次.所以在今天之内创建的文件是无法搜索到的
    updatedb是更新这个数据库的命令.
    数据库的配置文件为/etc/updatedb.conf
    PRUNE_BIND_MOUNTS = "yes" (开启搜索限制)
    PRUNEFS = (不搜索的文件系统)
    PRUNENAMES = (不搜索的文件类型)
    PRUNEPATHS = (不搜索的路径)
    命令搜索命令:whereis (只能搜索系统命令,不能搜索自己凭空创建的普通文件,也不能搜索linux内置命令)
    -b:只查找可执行文件 
    -m:只查找帮助文件
    文件搜索命令:which(不仅能看到命令的路径,如果有别名,还能看到别名)
    ls =‘ls --color=auto’(ls显示颜色,设置为自动)
    whoami显示当前操作用户
    whatis ls 查看ls的作用
    echo $PATH 查看环境变量

    find搜索(避免大范围的搜索,会非常浪费系统资源,建议不在直接在“/”目录下搜索)
    格式:find 【搜索范围】【搜索条件】;
    例:find /home -name 文件名;
    注意:find搜索默认是完全匹配。
    “*”匹配任意字符,例:find /home -name “*test*”,显示所有名字带test的文件;或例:find /home -name “*”,home目录下的所有文件,包括隐藏文件。
    “?”匹配任意一个字符,
    “【】”匹配任意一个中括号内的字符,例:find /home -name “test【12】”,显示test1和test2文件;或find /home -name “【12】*”,显示以1和2开头的文件。
    find 按文件时间来搜索
    find /home -mtime +10 在home目录下,查找10天前修改的文件
    find /home -mtime 10 在home目录下,查找10天前当天修改的文件
    find /home -mtime -10 在home目录下,查找10天内修改的文件
    atime 文件访问时间
    ctime 改变文件属性
    mtime 修改文件内容
    find /root -iname test 不区分要搜索的test大小写格式
    find /root -user root 搜索root目录下的所有属于root用户的文件
    find /root -nouser 没有所属者的文件,liunx中,每个文件都有所属者,如果没有,那么一般都是垃圾文件,但还是有特例的,比如内核产生的文件,就没有所属者,一般在proc和sys目录下;还有外来文件,也就是U盘拷入的文件也会忽略所有者。
    find 目录 -size 文件大小
    注意:文件大小用小写k和大写M。
    -a 表示and
    -o 表示or
    find /etc -size +20k -a -size -50k -exec ls -lh {} ;
    -exec {} ; 固定格式,表示直接对前面的搜索结果进行后面的命令处理

    在文件中查找字符串
    grep [选项] 字符串 文件名 (字符串使用 "" 包围,结果为行记录) -i 忽略大小写 -v 排除指定字符串
    ls -l | grep -v '^d' 查找非文件夹的文件, ^d为正则表达式d开头的记录,ls -l中查出的记录文件夹以d开头

    帮助命令

    man是manual的缩写
    1.man + 命令名称-----最常用的帮助命令,例如 man ls 主要显示命令的作用和命令的用法
    
    进入man命令里操作,
    1,:q退出 
    2,输入:/ -d 搜索"-d"字符串,按n往下搜“-d”,shift+n 往上搜“-d”
    
    man的级别:
    
    1、查看命令的帮助 
    2、查看可被内核调用的函数的帮助
    3、查看函数和函数库的帮助
    4、查看特殊文件的帮助(主要是/dev目录下的文件)
    5、查看配置文件的帮助
    6、查看游戏的帮助
    7、查看其它杂项的帮助
    8、查看系统管理员可用命令的帮助
    9、查看和内核相关文件的帮助(不一定存在)
    
    查看命令有哪个级别的帮助
    man -f 命令 相当于 whatis 命令
    查看单级别的命令帮助 如:man -5 passwd 查看5级别的passwd帮助 man -4 null man -8 ifconfig
    
    如不打等级号,man命令默认打开最小等级的信息
    
    man -k 命令 相当于 apropos 命令 如:apropos passwd 
    搜索所有含有关键词“命令”的帮助文档

    man,--help,help,info总共四种获取帮助的命令。
    1. 命令 --help 获取选项帮助
    例如:ls --help
    
    2.help shell内部命令
    例如:whereis可以用来判断一个命令是否是shell内部命令,ls在/bin/下面有可执行文件
    说明ls命令不是shell内部命令,cd命令在/bin/下面没有相应的可执行文件,所以是shell
    自带的命令.
    
    3.info 命令
    
    info里面内容十分繁琐,是关于命令的一个巨大的帮助文档,里面有各个版本对于此命令
    的说明。
    -回车:进入带*号的说明
    -u: 进入上层页面
    -n: 进入下一个帮助小节
    -p: 进入上一个帮助小节
    -q: 退出

    压缩与解压缩

    常用压缩格式:.zip .gz .bz2
    常用压缩格式:.tar.gz .tar.bz2
    .zip压缩
    zip 压缩文件名 源文件 //压缩文件
    zip -r 压缩目录名 源目录 //压缩目录
    .zip格式解压缩
    unzip 压缩文件 //解压缩文件 
    
    .gz格式压缩
    gzip 源文件 //压缩为.gz格式的压缩文件,源文件会消失
    gzip -c 源文件 > 压缩文件 //压缩为.gz格式,源文件保留
    gzip -r 目录 //压缩目录下所有子文件,但是不能压缩目录
    .gz解压缩
    gzip -d 压缩文件 //解压缩文件
    gunzip 压缩文件 //解压缩文件 
    
    bzip压缩
    bzip2 源文件名 //压缩文件,源文件会消失
    bzip2 -k 源文件 //压缩后保留源文件
    *bzip不能压缩目录
    bzip解压缩
    bzip -d 压缩文件 //解压bzip2文件
    bunbzip 压缩文件 //压缩文件
    
    打包命令tar
    tar -cvf 打包文件名 源文件 //压缩为tar格式
    tar -zvcf 压缩包名.tar.gz 源文件 //压缩为.tar.gz格式
    tar -jvcf 压缩包名.tar.bz2 源文件 //压缩为.tar.bz2格式
    
    解压tar
    tar -xvf 打包文件名 //解压tar格式文件
    tar -zxvf 压缩包名.tar.gz //解压.tar.gz格式文件
    tar -jxvf 压缩包名.tar.bz2 //解压.tar.bz2格式文件
    
    -c:打包
    -v:显示过程
    -f:指定打包后的文件名
    -x:解打包
    -z:压缩为.tar.gz格式
    -j:压缩为.tar.bz2格式
    
    其他用法
    tar -jxvf 打包文件名 -C 绝对路径 //指定解压缩位置
    tar -zcvf 绝对路径(/tmp/)+打包文件名 源文件 源文件 //将多个文件解压到指定路径
    tar -ztvf 压缩包文件名 //查看压缩包内文件

    关机命令

    shutdown [选项] 时间
    -h 关机 -r 重启 -c 取消全一个关机命令 shutdown -r now #立马重启
    halt poweroff inti 0 也都可以关机 但不安全
    reboot init 6 也可以重启
    runlevel查看运行级别 前级别 当前级别
    logout退出当前用户,也就是注销
    shutdown命令:
    【shutdown -h 05:30】 设定凌晨05:30关机
    【shutdown -h now】 立即关机
    【shutdown -r 05:30】 设定凌晨05:30重启
    【shutdown -r now】 立即重启
    【shutdown -c】 取消前一个关机或重启命令
    注:
    1、以上定时关机或重启命令执行后,计算机就会卡在那里,当前用户和其他登录的用户都将无法操作,直到关机或重启。这个时候,如果当前用户按【ctrl+c】可以取消本次关机或重启的操作,而其他用户如果按【ctrl+c】的话,则不会取消关机或重启操作,但可以退出中断,继续进行其他操作。
    2、如果想要关机命令后台运行的话,可以在命令后面输入&,例如:【shutdown -h 05:30 &】,这样当前用户和其他登录用户的前台就不会中断了(若中断的话,按一下回车即可);
    3、任何时候,不管哪个用户输入【shutdown -c】命令都可以取消关机或重启操作。
    4、后面的时间可以使用【+m】格式,表示多少分钟后执行。也可以使用【hh:mm】格式,表示指定的时间执行,该时间是24小时制的;
    5、若远程登录的话,最后不要执行关机命令,因为开机需要到机房开机才行。重启也尽量少执行,若必须运行,则应关闭正在运行的服务;

    挂载命令

    1)查询与自动挂载 
    mount 查询系统中已挂载的设备
    mount -a 依据配置文件/etc/fstab的内容,自动挂载
    (2)挂载命令的格式
    mount [-t 文件系统] [-o特殊选项] 设备 文件名 挂载点
    选项:
    -t 文件系统:加入文件系统类型来指定挂载的类型,ext3,ext4,iso9660等文件系统
    -o 特殊选项:可以指定挂载的额外选项
    例:mount -o remount,noexec /home/
    #重新挂载/home分区,使用noexec权限
    (3)挂载光盘
    mkdir /mnt/cdrom/ #建立挂载点,空目录都可以
    mount -t iso9660 /dev/sr0 /mnt/cdrom/ 
    或mount /dev/sr0 /mnt/cdrom/ #挂载光盘
    (4)卸载光盘
    umount 设备文件名或挂载点
    umount /mnt/cdrom/或umount /dev/sr0
    (5)挂载优盘
    fdisk -l
    #查看设备文件名
    mount -t vfat /dev/sdb1 /mnt/usb/ 
    #vfat指的是fat32文件系统
    #Linux默认不支持NTFS文件系统的

     查看登录信息

    w 查看用户信息 (有系统资源)
      load average: x.xx x.xx x.xx 表示系统在1分钟内 5分钟内 15分钟内的平均负载(CPU 内存)
      tty:终端 tty1本机终端 pts/0第一个远程终端 IDLE:用户闲置时间 WHAT:用户正在执行命令
    who 查看用户信息(简化)
    last 查询当前登陆和过去登陆用户信息 (可以看到reboot时间)实际是查看/var/log/wtmp 但必须用last命令才能看
    lastlog 查看所有用户最后一次登陆时间 /var/log/lastlog 不能直接看 也是用lastlog看

    SHELL脚本

    Shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用Shell来启动、挂起、停止甚至时编写一些程序。Shell还是一个功能相当强大的编程语言,易编写,易调试,灵活性较强。Shell是解释执行的脚本语言,在Shell中可以直接调用Linux系统命令.Shell分类 Bourne Shell(主文件名为sh) 和C Shell(BSD版的Unix 两种语法类型有Bourne和C,彼此不兼容。)Bourne家族主要包括sh,ksh,Bash(Linux标准Shell),psh,zsh;C家族主要包括:csh,tcsh echo $SHELL

    查看Shell Bash:Bash与sh兼容,现在使用的Linux就是使用Bash作为用户的基本Shell vi /etc/shells

    脚本执行方式

    1、echo输出命令和脚本执行
    
    格式:echo [选项] [输出内容]
    选项: -e:支持反斜线控制的字符转换
    echo "bols he cangls ni xihuan nayige"
    a - 输出警告音
     - 退格符
    
     - 换行符
    
     - 回车键
    	 - 制表符,也就是tab键
    v - 垂直制表符
    nnn - 按照八进制ASCII码输出字符
    xhh - 按照十六进制ASCII表输出字符
    echo -e "bols he cangls ni xihuan nayige"
    echo -e "hello"
    echo -e "h	e	l
    l	o	"
    echo -e "x68	x65	x6c
    x6c	x6f"
    echo -e "e[1;31m嫁人就要嫁凤姐e[0m"
    #输出颜色 e[1;##m - 开启颜色显示; e[0m - 关闭颜色显示
    #30m=黑色,31m=红色,32m=绿色,33m=黄色
    #34m=蓝色,35m=洋红,36m=青色,37m=白色
    
    2脚本执行:
    方法1:赋予执行权限,直接运行
    chmod 755 hello.sh
    ./hello.sh(或者绝对路径执行 /root/hello.sh)
    方法2:通过Bash调用执行脚本
    bash hello.sh
    二、
    #!/bin/Bash
    不是注释,它标称下面的内容是linux的标准脚本程序
    如果该脚本使用纯shell语句完成,不加#!/bin/Bash,运行没问题
    但,脚本调用了其他语言,就会报错

    别名

    alias--查看系统当中默认已经生效的别名
    alias ls = 'ls --color=never'--设定别名(临时生效,重启或重登录后失效)
    vi ~/.bashrc(不止一个环境变量文件) --写入环境变量配置文件(用来更新用户环境变量~代表用户家目录)
    vi /root/.bashrc --增加alias ls = 'ls --color=never’(系统再次重启后永久生效)
    source .bashrc--使当前环境变量设置生效(不需要系统再次重启后永久生效)
    unalias ls -- 删除别名
    命令生效顺序
    第一顺位执行绝对路径或者相对路径的命令
    第二顺位执行别名
    第三顺位执行Bash的内部命令
    第四顺位执行按照$PATH环境变量设置定义的目录顺序的第一个命令

    快捷键

    ctrl + c 强制终止
    ctrl + l 清屏相当于clear
    ctrl + a 光标快速回到行首
    ctrl + e 光标快速去到行尾
    ctrl + u 从光标所在位置删除到行首
    ctrl + z 把命令放入后台--这个命令很谨慎使用
    ctrl + r 历史命令搜索

    历史命令

    history [选项] [历史命令保存文件]
    -c 清空历史命令
    -w 把缓存中的历史命令写入历史命令保存文件 ~/.bash_history
    #默认保存1000条
    HISTSIZE=1000
    #vi /etc/profile 环境变量配置文件
    基本调用
    上下箭头来重复调用
    !n 来执行第n条历史命令
    !! 重复执行上一条命令
    !字符串 重复执行后一个该串开头的命令
    
    Tab键
    进行命令(环境变量)和目录补全(操作路径)

    标准输入设备:键盘/dev/stdin 描述0

    标准输出:显示器/dev/stdout 描述1
    标准错误输出:显示器/dev/stderr 描述2
    
    

    输出重定向

    命令 > 文件 “覆盖方式把命令的正确输出 输出到指定文件或设备中”
    命令 >> 文件 “追加方式把命令的正确输出 输出到指定文件或设备中”
    命令 2>(2>>)文件 “覆盖(追加)方式把命令的错误输出 输出到指定文件或设备中”注意带2的错误输出后面不能有空格
    命令 >> 文件 2>&1 命令 &>> 文件 把命令的正确或错误续写到文件或设备中
    命令 >> 文件1 2>> 文件2 把命令正确输出 输出到指定文件或设备
    命令 &> /dev/null 将命令的结果丢入null(作用类似于垃圾箱)中 只执行,不显示
    标准输出重定向
      >:覆盖
      >>:追加
    标准错误输出重定向
      2>:覆盖
      2>>:追加
    正确输出和错误输出同时保存
    命令 > 文件 2>&1   覆盖    0代表标准输入,1代表标准输出,2代表标准错误, &符号的作用可以理解为"引用"像C的指针一样,&1就是标准输出的引用
    命令 >> 文件 2>&1  追加
    命令 &>文件        覆盖
    命令 &>>文件       追加
    命令 >>文件1 2>>文件2  保存到两个文件
    重定向时是不输出到屏幕上的,要想即写入文件又显示在屏幕上,需要使用tee,tee解释read from standard input and write to standard output and files
    <command> 2>&1 | tee <logfile>
    
    输入重定向(用的少,了解即可)
    wc 执行后 输入 ctrl+d结束 会统计输入行数 单词数 字母数
    wc [选项] [文件名] -c字节数 -l行数 -w单词数
    wc < 文件名 用文件的内容作为输入 wc << 标记 统计标记到标记再次出现之间的字符

    执行多条命令及管道符

    ";"连接命令 顺序执行
    "&&"连接命令 逻辑与执行 第一条执行 第二条执行 第一条错误 第二条不执行
    "||"连接命令 逻辑或执行 第一条执行 第二条不执行 第一条错误 第二条执行
    脚本中的应用:命令 && echo yes || echo no 命令正确yes 错误no
    注意&& echo yes || echo no 顺序不能颠倒,不然命令出错的时候会同时输出no yes
    
    more [文件名] "分页显示文件内容"
    "|" 管道符 命令1|命令2 命令1正确的结果 作为命令2的操作对象
    例如 ls -l > /etc/ | more “用于分页显示命令执行结果”
         netstat -an | grep ESTABLISHED | wc -l "用于查看当前连接本机的客户端 并 统计客户端数量"

    通配符及特殊符号

    通配符(文件名或者目录名)
    1.?  匹配任意一个字符
    2.*  匹配0个或任意多个字符
    3.[] 匹配括号中任意一个字符
    4.[-]匹配括号中任意一个字符,-代表一个范围
    5.[^]匹配不是括号中任意一个字符
    
    Bash中其他特殊符号
    '' 单引号,在单引号中左右的特殊符号,如$,&都没有特殊含义
    "" 双引号,在双引号中左右的特殊符号都没有特殊含义,但是“$”,"`",""是例外。拥有“调用变量的值”,“引用命令”和“转义符”的特殊含义
    `` 反引号,反引号括起来的内容是系统命令,在Bash中会先执行它。和$()作用一样。
    $() 用来引用系统命令
    # 在Shell脚本中,#开头的行代表注释
    $ 用于调用变量的值,如需要调用变量name的值时,需要用$name的方式得到变量的值
     转义符,跟在之后的特殊符号将失去特殊含义,变为普通字符。如$将输出"$"符号

    crontab定时器

    格式

    {minute} {hour} {day-of-month} {month} {day-of-week} {full-path-to-shell-script} 

    • minute: 区间为 0 – 59 
    • hour: 区间为0 – 23 
    • day-of-month: 区间为0 – 31 
    • month: 区间为1 – 12. 1 是1月. 12是12月. 
    • Day-of-week: 区间为0 – 7. 周日可以是0或7.

    添加定时器

    crontab -e : 修改crontab文件. 如果文件不存在会自动创建,在文件里添加。 
    crontab -r : 删除crontab文件。
    crontab -ir : 删除crontab文件前提醒用户。

    星号(*):代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。
    逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”
    中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”
    正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。
    同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次。

    查看已有定时器

    crontab -l    //查看用户的定时器(有的木马之所以删不完就是因为用了定时器定时下载)

    Crontab实例

    touch一个sh文件,编写脚本,并chmod赋予执行权限。

    crontab -e在定时文件中写入如下

    然后查看是否添加成功

    1、在 凌晨00:01运行

    1 0 * * * /home/XXXX.sh

    2、每个工作日23:59都进行备份作业。

    59 11 * * 1,2,3,4,5 /home/XXXX.sh   

    或者如下写法:

    59 11 * * 1-5 /home/XXXX.sh

    3、每分钟运行一次命令

    */1 * * * * /home/XXXX.sh

    4、每个月的1号 14:10 运行

    10 14 1 * * /home/XXXX.sh

    开机自启脚本

    首先了解/etc/rc.d下面的几个文件:

    /etc/inittab #初始化的主干文件
    /etc/rc.d #初始化的相关rc文件目录,下面有五个文件夹
    /etc/rc.d/rc.sysinit #系统初始化程序
    /etc/rc.d/rc #相应启动级别下的关键初始化程序,用以执行相应/etc/rc.d/rcN.d下的所有程序
    /etc/rc.d/rcN.d/ #N取值范围为[0,6],含有各类S和K开头的软连接文件,软连接至rc.d/init.d/下各类服务和rc.local脚本
    /etc/rc.d/init.d/ #含有各类服务程序
    /etc/rc.d/rc.local #本地初始化程序

    使用rc.local文件初始化本地程序。

    //赋予可执行权限
    chmod +x /etc/rc.d/rc.local
    //编辑启动文件
    vim /etc/rc.d/rc.local
    //在 /etc/rc.d/rc.local中加入自己的执行脚本 &表示后台运行,一定要在exit 0之前 ##
    sh /start.sh &
    //如果开机启动失败 可以查看系统的启动日志 查看脚本问题
    tail -f /var/log/boot.log

    ubantu16

    #赋予可执行权限
    sudo chmod +x /etc/rc.local
    #编辑启动文件
    vim /etc/rc.local
    #在 /etc/rc.local中加入自己的执行脚本 &表示后台运行
    nohup /root/start.sh &
    #启用rc.local
    sudo systemctl enable rc-local.service  
    #查看启动日志
    tail -200 /var/log/syslog|grep rc.local  

    发现一个问题就是~根目录不识别,一定要用/root代替~

    nohup和&的区别

    & :指在后台运行,但当用户推出(挂起)的时候,命令自动也跟着退出

    nohup :不挂断的运行,注意并没有后台运行的功能,,就是指,用nohup运行命令可以使命令永久的执行下去,和用户终端没有关系(也就是不能接受终端标准输入),例如我们断开SSH连接都不会影响他的运行,注意了nohup没有后台运行的意思;&才是后台运行

    如果想让程序永久运行,我们可以巧妙的吧他们结合起来用就是:

    nohup COMMAND &

    这样就能使命令永久的在后台执行

    nohup sh test.sh
    将sh test.sh任务放到后台,关闭标准输入,终端不再能够接收任何输入(标准输入),重定向标准输出和标准错误到当前目录下的nohup.out文件,即使关闭xshell退出当前session依然继续运行。
    nohup sh test.sh  & 
    将sh test.sh任务放到后台,但是依然可以使用标准输入,终端能够接收任何输入,重定向标准输出和标准错误到当前目录下的nohup.out文件,即使关闭xshell退出当前session依然继续运行。

    nohup命令会生成nouhup.out日志文件

    清空nohup.out

    cat /dev/null > nohup.out

    只输出错误信息到日志文件

    nohup ./program >/dev/null 2>log &

    什么信息也不要

    nohup ./program >/dev/null 2>&1 &

    将内存中数据写入硬盘

    sync

    输入sync,在内存中的数据,就会被写入硬盘中;所以,在系统关机和重启前,最好多执行几次!

    文件所属及权限

    改变文件所有者,也可以顺便指定文件的所有组

        - R 递归式地改变指定目录及其下的所有子目录和文件的拥有者。

    chown [OPTION]... [OWNER][:[GROUP]] FILE...

    改变文件或目录所属的组

      - R 递归式地改变指定目录及其下的所有子目录和文件的属组。

    chgrp [OPTION]... GROUP FILE...

    文件读写执行权限

    chmod [OPTION]... MODE[,MODE]... FILE...

    文字法设定权限

    用户:

    u 表示“用户(user)”,即文件或目录的所有者。
    g 表示“同组(group)用户”,即与文件属主有相同组ID的所有用户。
    o 表示“其他(others)用户”。
    a 表示“所有(all)用户”。它是系统默认值。

    操作符:

    + 添加某个权限。
    - 取消某个权限。
    = 赋予给定权限并取消其他所有权限(如果有的话)。

    权限:

    r 可读。
    w 可写。
    x 可执行。

    X 只有目标文件对某些用户是可执行的或该目标文件是目录时才追加x 属性。
    s 在文件执行时把进程的属主或组ID置为该文件的文件属主。方式“u+s”设置文件的用户ID位,“g+s”设置组ID位。
    t 保存程序的文本到交换设备上。
    u 与文件属主拥有一样的权限。
    g 与和文件属主同组的用户拥有一样的权限。
    o 与其他用户拥有一样的权限。

    文件名:

    以空格分开的要改变权限的文件列表,支持通配符。 

    例如:同组用户可读可写,其他非同组用户可读

    chmod g+rw,o+r file

    数字设定法权限

    0表示没有权限,1表示可执行权限,2表示可写权限,4表示可读权限,然后将其相加。所以数字属性的格式应为3个从0到7的八进制数,其顺序是(u)(g)(o)

    例如:为log.txt添加所属用户可读写执行,同组用户可读写,非同组用户可读

    chmod 764 log.txt

    查看核心版本

    uname -r    #显示电脑以及操作系统的相关信息

    cat /proc/version   #正在运行的内核版本

    cat /etc/issue    #显示的是发行版本信息

    推荐:

    安装yum install -y redhat-lsb

    lsb_release -a   #适用于所有的linux,包括Redhat、SuSE、Debian等发行版,但是在debian下要安装lsb

    ubantu查看内核

    查看系统硬件配置

    cat /proc/cpuinfo  #查看CPU信息的linux系统信息命令
    fdisk -l |grep Disk  #查看硬盘大小
    cat /proc/meminfo |grep MemTotal    #查看内存大小
    grep MemFree /proc/meminfo # 查看空闲内存量

    查看文件内容

    cat  由第一行开始显示档案内容

    tac  由倒数第一行开始显示档案内容

    nl   显示的时候输出行号 

    more   一页一页的显示档案内容(此命令可做管道符)

    less  与 more 类似,但是比 more 更好用,可以往前翻页

    ess file

    然后Ctrl+G  

    然后 

    按f键,是向前查看  forword

    按b键,是向后查看 backword

    cat  catalina.out  | grep "22:00" --color |less

    然后shift + g 也可以到最后

    head   只看开头几行

    tail   只看结尾几行(-f 可实时输出)

    od   以八进制读取

    查看依赖库

    ldd是list dynamic dependencies的缩写,意思是列出动态库依赖关系,ldd命令是glibc提供的。

    ldd --version    #查看glibc版本

    查看服务器环境版本

    cat /etc/redhat-release    #查看Centos版本
    java -version    #查看jdk版本
    ./catalina.sh version   #查看tomcat版本
    select version();    #查看mysql版本(要连接mysql)

    修改服务器密码

    passwd    #修改root密码
  • 相关阅读:
    一些C++11语言新特性
    项目管理计划应该包括哪些内容
    真相令人震惊!为什么越有钱的人,欠的钱越多?
    80后小伙返乡创业种植中药材,带领乡亲们脱贫致富
    Tableau
    知识点汇总
    决策树分析、EMV(期望货币值)
    信息系统项目管理师60天冲刺复习计划,2019下半年高项冲刺计划
    【系统分析师之路】系统分析师备考计划
    有一种规律:“劣币驱逐良币”,“坏人淘汰好人”(深度)
  • 原文地址:https://www.cnblogs.com/aeolian/p/Linux.html
Copyright © 2011-2022 走看看