Linux常见指令集和使用技巧(持续更新)

  created  by  鱼鱼 {{tag}}
创建于 2018年09月26日 10:38:11 最后修改于 2019年09月09日 14:28:58

Linux常见指令集和使用技巧(持续更新)

Linux常见指令集和使用技巧(持续更新)

    目前是一步一步记录用到了的Linux指令

基本运算符

|    管道,将符号前的指令输出作为符号后的指令输入

>    将正常输出重定向(比如指令打印内容输出到文件)

>>    将正常输出追加重定向(区别与上面的覆盖,这个指令对于已经存在的文件会追加内容)

&    后台执行

&&    前面的指令执行完毕才执行后面的指令

||    前面的指令执行出错才执行后面的指令    

基本指令集

ls    显示目录下的文件目录或者列出文件信息

ll    属于ls,列出目录下的所有文件信息

cd    进入目录

pwd    显示当前目录的绝对路径

mkdir    创建目录

rm    删除目录(慎)

mv    移动目录

打包安装一个文件

使用apt进行包管理

    即文件的打包安装,对于不同的Linux系统使用的工具有所不同,此处使用ubuntu系统,利用apt工具进行打包。

    Linux ubuntu系统的包后缀名为.deb。

    Linux有一个远程包数据库,可以很方便地进行包管理,相关指令如下(sudo语句省略):

apt-get update    更新包列表

apt search [name]    搜索某个包

apt show [name]    查看某包信息

dpkg -s [name]    查看包的安装状态

apt-get install [name]    安装包

apt remove [name]    删除包

apt-get upgrade [name]    更新包

vm文本编辑器

    vm是Linux系统上常见的文本编辑,常用指令和操作如下:

vi [file]    启用编辑器编辑/预览文件(确保有写权限)

按键i    切换到输入模式

按键:    切换到底线命令模式

按键Esc    切换到命令模式

在输入模式下,可以进行正常的文本编辑

在底线命令中,w键为保存,q键为退出

文件查看

tail   [options]    [file]        查看文件尾部,默认查看10行

    -f[num]    num代表行数,能实时监控文件   ctrl+c退出监控

    -n[num]                显示后面n行

cat        输出文件内容

    cat dev/null > etc/test.txt        将test文件清空

tac        反向输出文件内容

more        同样是输出文件内容,但是分了页,分别用空格和b进行前后翻页,

            Enter    向下n行(默认1)

    +[num]    从第num行开始显示

     -[num]    每页显示num个

     +[pattern]    从匹配pattern字符开始显示

less        不同于more,more和cat都是先加载整个文件,less是逐页加载,并且可以随意移动(向前),不像more只能翻页和向后移动

        命令行:利用上下移动行 ctrl+f/b翻页 

                    /pattern        向后查找关键字        ?pattern        向前查找关键字

                    n            下一处关键字            shift+n        上一处关键字

示例

1.利用grep查找行并且分页查看

     grep "ERROR" demo.log | more

2. 将文件清空  

     cat dev/null > etc/test.txt 

在Linux上使用ftp

1.在系统上安装依赖包    

    sudo apt-get update

    sudo apt-get install vsftpd

2.修改配置文件

    进入/etc目录后,使用编辑器修改vsftpd.conf文件:

    sudo vi vsftpd.conf

    修改#write_enable=YES行,将注释‘#’去掉(此为全局设定读写权限,想要加以限制需要详细设定配置),编辑并保存。

3.添加ftp目录和用户

    此处选择/home/uftp作为目录

    创建目录并为其添加权限

    sudo chmod 777 -R /home/uftp    777为最高的权限 可按需调整,详细操作在下面

    sudo useradd -d /home/uftp -s /bin/bash [username]    当然 可以使用默认用户

4.重启服务

     sudo service vsftpd restart

权限处理

基本权限说明

    文件权限一共有三种:r、w、x,分别代表可读、可写、可执行,使用ll后能查看出目录下的文件对应的信息,其中包含文件的权限,如图:

    第一列中就包含了文件的权限信息,d代表是目录,然后依次是所有者(root)、所属组用户的权限和其他人的权限,三个字母为一个单位,无权限会用-占位,分别是rwx(最高权限)、r-x(读和可执行)、r-x,权限对于目录和文件意义是不同的,在此不予详述。

修改文件/目录权限

    rwx分别可用421来表示,这样任意的权限就可以使用0-7的数字表示,对应三种用户的权限就是三个数字,因此可用利用下面的数字修改文件/目录权限

    chmod [权限数字组] [参数] [文件/目录]

    比较重要的参数为-R,表示递归修改权限,例如递归目录下的usr文件为最高权限即为:

    chmod 777 -R usr

    也可以单独为文件和用户组加减权限:

    chmod [用户组][+/-][权限组] [参数] [文件/目录]

    其中,用户组为u(root)、g(group)、o(others)、a(all),也可以组合,+/-表示加减权限,权限组为r、w、x和其组合,例如为组成员和其他用户添加写权限,指令为:

    chmod go+w usr

nohup与&语句

    nohup指不挂断的运行命令,当关闭SSH连接或者命令行窗口时,如果不使用该命令,当下操作会被挂断。

    而&指后台运行某命令,将输出内容写入指定的文件中,但是退出时命令一样会被挂断,与nohup并非同个意思,但二者经常一起使用。

使用范例:

    sudo nohup java -jar xxx.jar >/home/uftp/log.out 2>/home/uftp/error.out &    

    其中>/home/uftp/log.out为命令结果标准输出路径,2>/home/uftp/error.out为错误输出路径,二者可输出到一个文件中,即2>&1。

监测和释放端口占用

    使用如下指令监测端口:

    lsof -i:80

    上为查看80端口的占用,显示如下:

    通过kill指令强制结束指定pid为12500的进程:

    kill -9 12500

文本处理工具

grep

    用于匹配文本的工具,默认情况下会输出匹配的文本行,基本指令:

grep [options] '待匹配字符串' [file] 

    一些常见的参数:

-c    字符串的匹配次数,不再显示匹配内容

-n    输出行号

-v    显示不包含匹配文本的所有行

    匹配文本是支持正则的,可以直接用正则匹配。

    使用范例:

    grep  -c  "java" ./restart.sh

    为查找当前目录下restart.sh中所含"java"字符串的个数。 

    grep  -nv  "java" ./r*

    为查找当前目录下r开头文件中不含"java"字符串的行并打印行号 

awk

    awk更倾向于“分割”,以行为单位截取我们想要的字符串,基本指令:

awk [options] 'script' [file] 

    注意这里的指令中只能使用单引号,awk会分别读取每一行的内容并按规则进行截取。、

    一些常见的参数:

-F x    按指定的字符串或是正则分割(x为所指定的字符串)x为[xx,xx]时将按先后顺序整体分割

-v  expression    设定变量,expression为表达式 ,例如v=1

    内建变量(print后筛选待打印内容):

$x    打印第x段字符序列,x=0时输出完整字符串

FS    指定输出内容的分隔符(默认空格)

NF    分割后行内的字符串数目

NR    行号

    使用范例:

    awk '{print $1,$4,NF}' restart.sh

    这行脚本输出了文件中每一行分割后的第1和第4串字符串和分割后的总段数,按照默认规则(空格或者TAB)进行分割,注意如果$1,$4之间没有","分割(空格没用),两者将会连续输出无分隔符

    awk -F: -va=2 -vb=q '{print $1,$2+a,$2b}' restart.sh

    这行脚本输出了文件中每一行以“:”符号分割后的第一段,第二段+2和第二段拼装"q"字符,例如,原文为:

    x:2:hello:Thk                            分割后为:

    x 4 2q

    在script中也不只是print的使用,我们还可以使用一些运算符过滤行,例如:

     awk -F:  '$1=="x" && $2>1 {print $1}' restart.sh

    表示只会打印出结果中符合$1=="x" && $2>1条件的行的内容,(其中的数字运算若是涉及字符串默认true)

一些示例语句

安装和配置Tomcat

    将官网上的安装包移动到目录

    解压包 :

    tar  -xf apache-tomcat-8.5.35.tar.gz

    迁移目录:

    sudo mv apache-tomcat-8.5.35 /opt/tomcat8

    进入bin目录中:

    cd /opt/tomcat8/bin && ls

    查看java的安装目录:

    whereis java

    编辑startup.sh:

    sudo vi startup.sh

    在最后添加:

    export JAVA_HOME=/usr/lib/jvm/java-8-oracle

    export JRE_HOME=${JAVA_HOME}/jre

    export PATH=${JAVA_HOME}/bin:${JRE_HOME}:$PATH

    export CLASSPATH=.:${JRE_HOME}/lib/rt.jar:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar 

    export TOMCAT_HOME=/opt/tomcat8

    同样地,编辑shutdown.sh:

    sudo vi startup.sh

    这样一来,就可以在目录下启动tomcat,并通过默认接口8080访问tomcat

    sudo ./startup.sh

性能监控相关

ps    显示前台应用

    ps aux     单独使用显示前后台所有应用并能显示较全的信息

    -A 显示所有进程 -l显示进程的详细信息


2019-09-09鱼鱼