菜单 学习猿地 - LMONKEY

VIP

开通学习猿地VIP

尊享10项VIP特权 持续新增

知识通关挑战

打卡带练!告别无效练习

接私单赚外块

VIP优先接,累计金额超百万

学习猿地私房课免费学

大厂实战课仅对VIP开放

你的一对一导师

每月可免费咨询大牛30次

领取更多软件工程师实用特权

入驻
0
0

Linux常用操作命令大全

原创
05/13 14:22
阅读数 2777

一、目录及文件操作

1.1创建目录

命令:mkdir --创建目录命令

    mkdir    abc            在当前目录下创建一个名为abc的文件夹
    mkdir    /usr/abc       在指定目录下创建一个名为abc的文件夹

1.2删除目录或文件

命令:rm [-rf] 目录/文件

删除目录

    rm -r 目录1     递归删除当前目录下的指定目录1
    rm -rf 目录2    递归删除当前目录下的指定目录2(不询问)
    rm -rf *        将当前目录下的所有目录和文件全部删除
    rm -rf /*      【自杀行为命令!谨慎使用!】将会把根目录下的所有目录及文件全部删除

删除文件

    rm    文件名称        删除当前目录下的指定文件
    rm -f 文件文件        删除当前目录下的指定文件(不询问)

1.3重命名目录或文件名称

命令:mv 当前目录/文件 需改成的目录/文件名称

    mv aaa bbb              将目录aaa改为bbb(重命名)
    mv aaa.text bbb.text    将文件aaa改为bbb(重命名)

1.4目录切换

命令:cd --切换目录

    cd /           切换到根目录
    cd /root       切换到根目录下的root目录
    cd ..          切换到上一级目录 
    cd ~           切换到home目录
    cd -           切换到上次访问的目录

1.5目录及文件列表查看

命令:ls [-al]或ll

    ls                查看当前目录下的所有目录和文件
    ls -a             查看当前目录下的所有目录和文件(包括隐藏的文件)
    ls -l 或 ll       查看当前目录下的所有目录和文件(以列表方式显示查看,显示更多信息)
    ls /data          查看指定目录下的所有目录和文件(如:ls /data)

1.6复制目录或文件

命令:cp -r/cp 目录/文件名称 目录/文件拷贝的目标位置 -r代表递归(仅只复制文件不需要加-r,如果复制目录必须加此-r选项,加上后则会拷贝文件夹——包括下一级的子文件夹,以及子文件夹中的子文件夹,以此类推。)

    将/data/a目录下的aaa目录复制到 /usr目录下面     cp -r /data/a/aaa  /usr
    将/data/a目录下的aaa.text文件复制到 /usr目录下面     cp /data/a/aaa.text  /usr
    将/data/a目录下的aaa.text文件备份到 /data/a目录下面bbb.text     cp /data/a/aaa.text  /data/a/aaa.text(当前目录下的文件复制则备份文件名称不能跟原来一致)

1.7剪切目录或文件

命令:mv 目录/文件名称 目录/文件的新位置

    将/data/a目录下的aaa目录剪切到 /usr目录下面          mv /data/a/aaa /usr
    将/data/a目录下的aaa.text文件剪切到 /usr目录下面     mv /data/a/aaa.text /usr

1.8搜索目录或文件

命令:find -name 目录/文件 参数 文件名称

    find /data/tmp -name 'a*'    查找/usr/tmp目录下的所有以a开头的目录或文件
    find -name 'a*'              查找当前目录下的所有以a开头的目录或文件

1.9创建文件

命令:touch 文件名
在当前目录创建一个名为aa.txt的文件

touch  aa.tx

1.10查看及修改文件内容信息

命令 vi或vim 文件名

1.打开文件

vim test.txt 进入一般模式
注意:使用vi编辑器打开文件后,并不能编辑,因为此时处于命令模式。
可以控制屏幕光标的移动,字符、字或行的删除,查找,移动复制某区段及点击键盘i/a/o进入编辑模式
命令行模式下的常用命令:
【1】控制光标移动:↑,↓,j
【2】删除当前行:dd
【3】查找:/字符
【4】进入编辑模式:i o a
【5】进入底行模式::

2.编辑文件

● i(按键):在光标所在字符前开始插入
● a(按键):在光标所在字符后开始插入
● o(按键):在光标所在行的下面另起一新行插入
● ESC(按键) 退出编辑模式,将文件保存或退出vi
● :wq (shift+:调起输入框)(保存退出)
● :wq! (shift+:调起输入框)(表示强制保存退出)
● :x (shift+:调起输入框)(表示保存退出,写入文件并退出。仅当文件被修改时才写入,并更新文件修改时间;否则不会更新文件修改时间)
● :q! (shift+:调起输入框)(强制退出,内容不保存)
● :q (shift+:调起输入框)(如果内容修改则会提示是否保存)

1.11查看文件内容信息(仅支持查看)

命令:

cat/more/less/tail/head 

cat:看最后一屏

cat /data/aa.txt 文件,只能显示最后一页内容

more:百分比显示

more /data/aa.txt文件		可以显示百分比,从第一页开始查看aa.txt文件内容,按回车键一行一行进行查看回车可以向下一行,空格可以向下一页,q可以退出查看

less:翻页查看

less /data/aa.txt		从第一页开始查看aa.txt文件内容,按回车键一行一行的看,按空格键一页一页的看,支持使用PageDown和PageUp翻页,q结束查看

tail:指定行数或者动态查看(实时查看日志)

    tail -10 /data/aa.log         查看aa.log文件的后10行,Ctrl+C结束。 
    tail -f /data/aa.log			查看aa.log文件的后10行内容,Ctrl+C结束。
    tail -n 7 /data/aa.log		查看aa.log文件的后7行内容,Ctrl+C结束。
    head /data/aa.log				查看aa.log文件的前10行内容,Ctrl+C结束。
    head -n 7 /data/aa.log		查看aa.log文件的前7行内容,Ctrl+C结束。

1.12终止当前操作

命令:Ctrl+c和Ctrl+z都是中断命令,作用不一样。

Ctrl+Z将任务中断,但是此任务并没有结束,在进程中只是维持挂起的状态,用户可以使用fg/bg操作前台或后台的任务,bg命令把被中断的任务放在后台执行,fg命令重新启动前台被中断的任务。
Ctrl+C是强制中断程序的执行。

1.13重定向功能

可以使用 > 或 < 将命令的输出的命令重定向到aa.txt文件中(如果没有这个文件则创建一个)
命令:

echo [选项] [输出内容]

选项:
● -e:支持反斜线控制的字符转换
● -n:取消输出后行末的换行符号(内容输出后不换行)

    echo 'Hello World' > /root/test.txt      将字符串“Hello World” 写入到test.txt文件中
    echo "c.biancheng.net"                   echo后面的内容就会打印到屏幕上

在 echo 命令中如果使用了"-e"选项,则可以支持控制字符,如下所示。

控制字符 作 用
\ 输出\本身
\a 输出警告音
\b 退格键,也就是向左删除键
\c 取消输出行末的换行符。和“-n”选项一致
\e Esc键
\f 换页符
\n 换行符
\r 回车键
\t 制表符,也就是Tab键
\v 垂直制表符
\Onnn 按照八进制 ASCII 码表输出字符。其中 0 为数字 0,nnn 是三位八进制数
\xhh 按照十六进制 ASCH 码表输出字符。其中 hh 是两位十六进制数
    echo -e "\\ \a"                                        输出 \,同时会在系统音响中输出一声警告音
    echo -e "ab\bc"                                        输出 ac 在这个输出中,在 b 的左侧有"\b",所以输出时只有 ac
    echo -e "a\tb\tc\nd\te\tf"  
    因为加入了制表符"\t"和换行符"\n",所以会按照格式输出
    a b c
    d e f
    echo -e "\0141\t\0142\t\0143\n\0144\t\0145\t\0146"     会按照制ASCII码输出的如141 这个八制数在 ASCII码中代表小写的"a",其他的以此类推
    a b c
    d e f
    echo -e "\x61\t\x62\t\x63\n\x64\t\x65\t\x66"           会按照十六进制ASCII码同样可以输出
    a b c
    d e f
    echo -e "e[1;31m abed \e[0m"                           会把 abcd 按照红色输出。\e[1 是标准格式,代表颜色输出开始,\e[0m 代表颜色输出结束,31m 定义字体颜色是红色;echo 命令能够识别的颜色代码如下:30m代表黑色,31m代表红色,32m代表绿色,33m代表黄色,34m代表蓝色,35m代表洋红,36m代表青色,37m代表白色。
    echo -e "e[1;42m abed \e[0m"                           会给 abcd 加入一个绿色的背景。echo 命令可以使用的背景颜色如下:40m=黑色,41m=红色,42m=绿色,43m=黄色,44m=蓝色,45m=洋红,46m=青色,47m=白色。

在 echo 命令中如果使用了"-n"选项,则表示在输出内容结束后,不会换行,直接显示新行的提示符。

echo -n "c.biancheng.net"     回车则屏幕显示:c.biancheng.net[root@localhost ~]#

二、文件打包和压缩及解压操作

2.1文件打包和压缩

命令:

tar/unzip/zip

1.命令:tar -zcvf 打包压缩后的文件名 要打包的文件可以多个

● linux中的打包文件格式:.tar
● linux中的压缩文件格式:.gz
● linux中打包并压缩的文件格式:.tar.gz

Linux中的打包文件一般是以.tar结尾的,压缩的命令一般是以.gz结尾的。
而一般情况下打包和压缩是一起进行的,打包并压缩后的文件的后缀名一般.tar.gz。

其中:z:调用gzip压缩命令进行压缩
● c:打包文件
● v:显示运行过程
● f:指定文件名

    cd /data/aa                           如aa目录下有1.txt 2.txt两个文件进行打包压缩
    tar -cvf ab.tar 1.txt 2.txt		        将当前目录下1.txt 2.txt打包
    tar -cvf ab.tar ./*					    将当前目录下的所有文件打包压缩成ab.tar文件      
    .tar -zcvf ab.tar.gz 1.txt 2.txt       打包并压缩/data/aa目录下的1.txt 2.txt文件 压缩后的压缩包指定名称为ab.tar.gz
    .tar -zcvf ab.tar.gz  *                打包并压缩/data/aa目录下的所有文件 压缩后的压缩包指定名称为ab.tar.gz

2.命令:unzip/zip

压缩(zip)

    zip a.zip 1.txt							 将单个文件压缩(a.zip)
    zip -r a.zip a/							 将目录进行压缩(a.zip)
    zip -r a.zip 1.tx 2.txt		             将多个文件压缩为zip文件(a.zip)	

2.2文件解压

命令:tar [-zxvf] 压缩文件
其中:x:代表解压

    1.tar -xvf(-zxvf) a.tar				   解压a.tar压缩包,到当前文件夹下;
    2.tar -xvf a.tar -C data/local 	       解压a.tar压缩包,到/data/local目录下(C为大写,中间无空格,C代表指定解压的位置)
    3.tar -zxvf a.tar.gz				   解压a.tar.gz压缩包,到当前文件夹下
    4.tar -zxvf a.tar.gz -C usr/local      解压a.tar.gz压缩包,到/data/local目录下(C为大写,中间无空格,C代表指定解压的位置)
    5.tar xf a.tar.xz                      解压a.tar.xz压缩包,到当前文件夹下

解压缩(unzip)

    unzip a.zip  								解压一个zip格式压缩包
    unzip -d /data/app/a.zip			        将a.zip包,解压到指定/data/app/目录下

三、查找操作命令

命令:grep

    grep abc test.txt			             在test.txt文件中搜索abc字符串,大小写敏感且显示行;
    grep -n abc test.txt		             在test.txt文件中搜索abc字符串,大小写敏感且显示行及行号;
    grep -v abc test.txt		             在test.txt文件中搜索abc字符串,大小写敏感且显示没搜索到的行;
    grep -i abc test.txt		             在test.txt文件中搜索abc字符串,大小写敏感且显示行;
    grep -ni abc test.txt		             在test.txt文件中搜索abc字符串,大小写敏感且显示行及行号;
    ps -ef | grep nginx                    查找指定nginx服务进程 
    ps -ef | grep nginx | grep -v grep     查找指定服务进程,排除gerp身 
    ps -ef | grep nginx -c                 查找指定进程个数 

四、处理文本文件命令

4.1awk

● awk是一种处理文本文件的语言,简单来说awk就是把文件逐行读入
● awk [选项参数] ‘script’ var=value file(s)或awk [选项参数] -F scriptfile var=value file(s)
● -F 定义字段分割符号;-v 定义变量并赋值

实例:

    awk -F: '{print $0}' /data/test                                                                                   打印文件所有内容
    awk -F: '{print NR, $0}' /etc/passwd /etc/hosts                                                                   打印文件所有内容,并包括行号
    awk -F: '{print FNR,$0}' /etc/passwd /etc/hosts 
    awk -F: '{print $0,NF}' /data/test                                                                                保留记录的字段数
    awk 'BEGIN{FS=":"}{print $1,$3}' /data/test                                                                       输入字段分隔符,默认为空格
    awk '{print $1,$4}' testlog.txt                                                                                   每行按空格或TAB分割,输出文本中的1、4项
    awk '{printf "%-8s %-10s\n",$1,$4}' testlog.txt                                                                   每行按空格或TAB分割,输出文本中的1、4项(格式化输出)
    awk -F, '{print $1,$2}' testlog.txt (awk 'BEGIN{FS=","} {print $1,$2}' testlog.txt)                               使用","分割
    awk -F '[ ,]'  '{print $1,$2,$5}'   testlog.txt                                                                   使用多个分隔符.先使用空格分割,然后对分割结果再使用","分割
    echo "this is a test" | awk '{ print $0 }'     输出为:this is a test                                              为打印一个或多个字段或所有字段,使用print命令。这是一个awk动作
    echo "this is a test" | awk '{ print $1 }'     输出为:this is a test   
    echo "this is a test" | awk '{ print $1, $2 }' 输出为:this is a test   
    awk '$1>2' testlog.txt                                                                                           过滤第一列字符串大于2的行
    awk '$1==2 {print $1,$3}' testlog.txt                                                                            过滤第一列字符串等于2的行
    awk '$1>2 && $2=="Are" {print $1,$2,$3}' testlog.txt                                                             过滤第一列字符串大于2并且第二列等于'Are'的行
    awk '{print NR,FNR,$1,$2,$3}' testlog.txt                                                                        输出顺序号 NR, 匹配文本行号
    awk '{print $1,$2,$5}' OFS=" $ "  testlog.txt                                                                    指定输出分割符
    awk '$2 ~ /th/ {print $2,$4}' testlog.txt                                                                        输出第二列包含 "th",并打印第二列与第四列
    awk '/re/ ' testlog.txt                                                                                          输出包含 "re" 的行
    awk 'BEGIN{IGNORECASE=1} /re/' testlog.txt                                                                       输出包含 "re" 的行忽略大小写
    $ awk '$2 !~ /th/ {print $2,$4}' log.txt(awk '!/th/ {print $2,$4}' log.txt)                                      输出第二列不包含 "th",并打印第二列与第四列
    ls -l *.txt | awk '{sum+=$5} END {print sum}'                                                                    计算文件大小
    awk 'length>80' log.txt                                                                                          从文件中找出长度大于 80 的行
    seq 9 | sed 'H;g' | awk -v RS='' '{for(i=1;i<=NF;i++)printf("%dx%d=%d%s", i, NR, i*NR, i==NR?"\n":"\t")}'        打印九九乘法表
    awk -F : '{ print $1 }' /etc/passwd                                                                              打印第一个":"前内容
    awk -F ':' 'BEGIN {print "start1,start7"} {print $1 "," $7} END {print "end1,end7"}' /etc/passwd  显示/etc/passwd的第1列和第7列,用逗号分隔显示,所有行开始前添加列名start1,start7,最后一行添加,end1,end7(BEGIN语句在所有文本处理动作执行之前被执行,END在所有文本处理动作执行之后被执行)
    awk -F : '{ print NR "  " NF "  " $0 }' /etc/passwd                                                              统计/etc/passwd文件中,每行的行号,每行的列数,对应的完整行内容
    awk 'BEGIN { print length("this is a text") }'                                                                   输出字符串的长度
    awk -F ':' '{ print toupper($1) }' /etc/passwd                                                                   将/etc/passwd的第一个":"前内容变成大写输出

4.2sed

sed 命令是利用脚本来处理文本文件
sed的命令格式:sed [options] ‘command’ file(s);
sed的脚本格式:sed [options] -f scriptfile file(s);

选项说明:

● -e :直接在命令行模式上进行sed动作编辑,此为默认选项;
● -f :将sed的动作写在一个文件内,用–f filename 执行filename内的sed动作;
● -i :直接修改文件内容;
● -n :只打印模式匹配的行;
● -r :支持扩展表达式;
● -h或–help:显示帮助;
● -V或–version:显示版本信息。

参数说明:

● a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行);
● c :取代, c 的后面可以接字串,这些字串可以把选定的行改为新的文本;
● d :删除, 删除选择的行, d 后面通常不接任何东东;
● i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(在当前行上面插入文本);
● p :打印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行;
● s :取代,可以直接进行取代的工作,通常这个 s 的动作可以搭配正规表示法!例如 1,20s/old/new/g ;
● l :列表不能打印字符的清单;
● n :读取下一个输入行,用下一个命令处理新的行而不是用第一个命令;
● N :追加下一个输入行到模板块后面并在二者间嵌入一个新行,改变当前行号码;
● q :退出Sed;
● w :表示把行写入一个文件;
● = :打印当前行号;
● y :表示把一个字符翻译为另外的字符(但是不用于正则表达式);

实例:

    sed -e 4a\newLine test                                     在test文件的第四行后添加一行内容"newline",并将结果输出到标准输出
    sed -e '4 a newline\nnewline2' test                        在test文件的第四行后添加二行内容"newline",并将结果输出到标准输出
    sed -e '4 a newline\nnewline2\n' test                      在test文件的第四行后添加二行内容"newline"和 1 行空行,并将结果输出到标准输出
    sed -e '4 a \ ' testfile                                   在test文件的第四行之后追加 1 行空行
    nl /data/test | sed '2a drink tea'                         在test文件第二行后(亦即是加在第三行)加上"drink tea"内容
    nl /data/test | sed '2i drink tea'                         在test文件第二行前加上"drink tea"内容
    nl /data/test | sed '2a Drink tea or\drink beer 2'         在test文件在第二行后面加入两行字,例如 Drink tea or与 drink beer2,每一行之间都必须要以反斜杠"\"来进行新行的添加
    sed -n '/test/w file' example                              在example中所有包含test的行都被写入file里(w命令)
    sed 's/book/books/' test                                   替换文本中的字符串把book替换为books
    sed -n 's/test/TEST/p' test                               -n选项和p命令一起使用表示只打印那些发生替换的行:
    sed -i 's/book/books/g' test                              直接编辑文件选项-i,会匹配file文件中每一行的第一个book替换为books
    sed -i '5i\this is a test line' test.conf                 在test.conf文件第5行之前插入this is a test line:
    sed '/^test/i\this is a test line' file                   i\命令 将 this is a test line 追加到以test开头的行前面:
    sed -i '2a\this is a test line' test.conf                 在 test.conf 文件第2行之后插入 this is a test line
    sed '/^test/a\this is a test line' file                   将 this is a test line 追加到 以test 开头的行后面:
    sed 's/book/books/g' test                                 使用后缀 /g 标记会替换每一行中的所有匹配:
    nl /data/test | sed '2,5c No 2-5 number'                  将第2-5行的内容取代成为(No 2-5 number)
    echo sksksksksksk | sed 's/sk/SK/2g'                      当需要从第N处匹配开始替换时,可以使用 /Ng:
    输出:skSKSKSKSKSK
    echo sksksksksksk | sed 's/sk/SK/3g'
    输出:skskSKSKSKSK  
    echo sksksksksksk | sed 's/sk/SK/4g'
    输出:skskskSKSKSK 
    nl /data/test | sed -n '5,7p'                              仅列出 /data/test 文件内的第 5-7 行
    nl /data/test | sed '2,5d'                                 将 /data/test 的内容列出并且列印行号,同时,请将第 2~5 行删除;sed 的动作为 '2,5d' ,那个 d 就是删除!因为 2-5 行给他删除了,所以显示的数据就没有2-5行,注意一下,sed 后面接的动作,请务必以 '' 两个单引号括住.
    nl /data/test | sed '2d'                                   只要删除第 2 行
    sed '2d' test                                              删除test文件的第2行
    .nl /data/test | sed '3,$d'                                要删test文件的除第 3 到最后一行
    sed '3,$d' test                                            删除test文件的第3行到末尾所有行
    sed '$d' file                                              删除文件最后一行:
    sed '/^$/d' test                                           删除test文件空白行
    nl /etc/passwd | sed  '/root/d'                            删除/data/test所有包含root的行,其他行输出
    nl /data/test | sed '/root/p'                              搜索/data/test有root关键字的行并打印,如果root找到,除了输出所有行,还会输出匹配行
    nl /data/test | sed -n '/root/p'                           搜索/data/test有root关键字的行并打印,如果root找到,只会输出匹配行,使用-n的时候将只打印包含模板的行。
    nl /data/test | sed -n '/root/{s/bash/bash2/;p;q}'         搜索/data/test,找到root对应的行,执行后面花括号中的一组命令,每个命令之间用分号分隔,这里把bash替换为bash2,再输出这行
    nl /data/test | sed -e '3,$d' -e 's/bash/bash2/'           删除/data/test第三行到末尾的数据,并把bash替换为bash2
    sed '1,10y/abcde/ABCDE/' test                              把1~10行内所有abcde转变为大写,注意,正则表达式元字符不能使用这个命令(y命令)
    sed -n 'p;n' test.txt(sed -n '1~2p' test.txt)              打印奇数行
    sed -n 'n;p' test.txt(sed -n '2~2p' test.txt)              打印偶数行 

五、用户及权限操作命令

5.1创建用户

命令:useradd或adduser(需要超级用户)
格式:useradd [-d home] [-s shell] [-c comment] [-m [-k template]] [-f inactive] [-e expire ] [-p passwd] [-r] name
(添加用户)useradd 【参数】 用户名

账号建好之后,再用passwd设定账号的密码。使用useradd命令所建立的账号,是保存在/etc/passwd文本文件中。

● -g 属组,指定用户所属的群组
● -u 设置uid,该值在系统中必须是唯一的。0~499默认是保留给系统用户账号使用的,所以该值必须大于499。
● -m 创建家目录
● -M 没有家目录
● -G 指定属于多个组
● -s 指定登录shell
● -d 指定家目录,替换系统默认值/home/<用户名>
● -c 注释
● -D 改变它默认的属性
● -e 指定的日期是帐号失效的日期(日期格式为MM/DD/YY,例如06/30/12。缺省表示永久有效)
● -f:指定在密码过期后多少天即关闭该账号。如果为0账号立即被停用;如果为-1则账号一直可用。默认值为-1.
● -n:取消建立以用户名称为名的群组。
● -r:建立系统账号。

(修改密码)passwd 参数 用户名
● -l:锁定已经命名的账户名称
● -u:解开账户锁定状态
● -x, --maximum=DAYS:密码使用最大时间(天)
● -n, --minimum=DAYS:密码使用最小时间(天)
● -d:删除使用者的密码
● -S:检查指定使用者的密码认证种类
● --stdin:非交互式修改/设置密码,弊端是操作日志能查密码,用history -c 干掉。

    useradd wly                                    建立一个新用户账户wly无关联组等
    useradd -u 544 -d /usr/wly  -g users -m  wly   建立一个新用户账户wly,并设置UID为544,主目录为/usr/wly,属于users组: 加-m 如果主目录不存在则自动创建
    passwd wly                                     修改密码

(修改账号信息)usermod 参数 用户名
● -c:修改用户帐号的注释。
● -d:修改用户登入时的目录。
● -e:修改帐号的有效期限。
● -f: 修改在密码过期后多少天即关闭该帐号。
● -g:修改用户所属的群组。
● -G:修改用户所属的附加群组。
● -l:修改用户帐号名称。
● -L:锁定用户密码,使密码无效。
● -s:修改用户登入后所使用的shell。
● -u:修改用户ID。
● -U:解除密码锁定。

常用的参数包括-c, -d, -m, -g, -G, -s, -u以及-o等,与useradd命令中的选项一样,可以为用户指定新的资源值。

usermod -c "贵宾"  wly        将wly用户备注改为“贵宾”

5.2删除用户

命令:userdel 参数 用户名

    userdel wly              只删除用户wly用户所长的家目录不删除
    userdel -r wly             删除用户wly常用的选项是-r,它的作用是把用户的家目录一起删除

5.3切换登录用户

命令:su
作用于用户之间的切换。但是切换前的用户依然保持登录状态。如果是root 向普通或虚拟用户切换不需要密码,反之普通用户切换到其它任何用户都需要密码验证。

    su wly:切换到wly用户,但是路径还是/root目录
    su - wly : 切换到wly用户,路径变成了/home/wly
    su : 切换到root用户,但是路径还是原来的路径
    su - : 切换到root用户,并且路径是/root
    exit:退出返回之前的用户

5.4权限赋予

命令:sudo
普通用户能使用root权限的权利。只需输入自己账户的密码即可。

六、系统操作命令

1.关机和重启命令

命令:shutdown(关闭计算机)

shutdown是最常用也是最安全的关机和重启命令,它会在关机之前调用fsck检查磁盘,其中-h和-r是最常用的参数:

-h:停止系统服务并关机 ;-r: 停止系统服务后重启

    关机
        shutdown -h now        立刻关机
    	shutdown -h 15:30      到15:30关机,如果该时间小于当前时间,则到隔天关机
        shutdown -h 5        5分钟后关机
        poweroff            立刻关机
    重启
        shutdown -r now        立刻重启
        shutdown -r 5        5分钟后重启
        reboot                立刻重启

2.查找帮助命令

命令:–help;man命令(命令说明书)

    shutdown --help:
    ifconfig  --help:     查看网卡信息
    man shutdown           注意:man shutdown打开命令说明书之后,使用按键q退出

3.查看历史使用命令:

history

4.过滤与es相关命令:##

history | grep es

5.查看占用资源情况

1).ps -au 占用的资源是从进程启动开始,计算的平均占用资源,比如cpu等
2).top 实时占用的资源;

6.查看当前目录所占存储情况

1).du -lh 查看当前文件下各文件夹占用存储空间
2).du -sh 查看当前文件夹所占存储空间
3).du --max-depth=<目录层数> 超过指定层数的目录后,予以忽略。
4).du --max-depth=1 只查看当前目录下文件占用的存储空间

7.管道命令:

根据项目查看进程,更加PID查看项目,以及项目路径
1).ps -ef 查看所有的进程
2).ps -ef | grep nginx 查看nginx相关的进程

8.查看机器间是否网络连通:

ping 192.168.xx.xx 

9.查看当前系统端口:

1).命令:netstat -an 查看全部端口
2).命令:netstat -an | grep 8080 搜索指定端口

10.检查远程机器或本地机器上某端口是否打开:##

telnet www.baidu.com 80

11.查看IP信息:

ifconfig 或 ifconfig | more

12.查看Linux 系统上的文件系统磁盘使用情况统计查看:

df -h 

13.用于显示目录或文件的大小:

du -h 目录路径    查看指定目录

14.查看当前目录:

pwd

15.杀死进程(根据PID):

命令:kill pid 或者 kill -9 pid(强制杀死进程) pid:进程号

16.配置网络:

命令:setup 命令会开启一个图形化的配置工具

17.重启网络命令:

service network restart

18.清屏命令:

ctrl + l

19.查看liunx内核:

(uname -a)/(cat /proc/version)/(uname -r)

20.查看linux版本:

cat /etc/redhat-release

21.查看LINUX是多少位:

getconf LONG_BIT

22.查看时区:

date -R

23.关闭防火墙

1).service iptables stop 临时关闭防火墙
2).chkconfig iptables off 防火墙开启不启动
3).service iptables status 查看防火墙状态

24.开机启动选项

1)msconfig 查看开机启动选项
2)chkconfig 查看开机启动服务列表

25.修改文件权限命令:

chmod

文件调用权限分为三级 : 文件所有者(Owner)、用户组(Group)、其它用户(Other Users)
图片.png

只有文件所有者和超级用户可以修改文件或目录的权限。可以使用绝对模式(八进制数字模式),符号模式指定文件的权限。
图片.png

rwx:r-代表可读,w-代表可写,x-代表该文件是一个可执行文件,如rwx任意位置变为-则代表不可读或不可写或不可执行文件。

其他参数:

X-特殊执行权限只有当文件为目录文件,或者其他类型的用户有可执行权限时,才将文件权限设置可执行,s-当文件被执行时,根据who参数指定的用户类型设置文件的setuid或者setgid权限,t-设置粘贴位,只有超级用户可以设置该位,只有文件所有者u可以使用该位,-R : 对目前目录下的所有文件与子目录进行相同的权限变更(即以递归的方式逐个变更)

示例1:

给test.txt文件权限改为可执行文件权限,test.txt文件的权限是

chmod -rw------- test.txt

第一位:-就代表是文件,d代表是文件夹
第一段(2 ~ 4 个字符3位):代表拥有者的权限
第二段(5 ~ 7 个字符3位):代表拥有者所在的组,组员的权限
第三段(8 ~ 10个字符最后3位):代表的是其他用户的权限

示例2:

chmod -rw-r--r--  test.txt

● 前三位代表当前用户对文件权限:可以读/可以写/不能执行
● 中间三位代表当前组的其他用户对当前文件的操作权限:可以读/不能写/不能执行
● 后三位其他用户对当前文件权限:可以读/不能写/不能执行
图片.png

chmod命令也可以使用八进制数来指定权限。文件或目录的权限位是由9个权限位来控制,每三位为一组,它们分别是文件所有者(User)的读、写、执行,用户组(Group)的读、写、执行以及其它用户(Other)的读、写、执行。历史上,文件权限被放在一个比特掩码中,掩码中指定的比特位设为1,用来说明一个类具有相应的优先级。
图片.png

例如, 755 将这样解释:
● 所有者的权限用数字表达:属主的那三个权限位的数字加起来的总和。如 rwx ,也就是 4+2+1 ,应该是 7。
● 用户组的权限用数字表达:属组的那个权限位数字的相加的总和。 如 r-x ,也就是 4+0+1 ,应该是 5。
● 其它用户的权限数字表达:其它用户权限位的数字相加的总和。 如 r-x ,也就是 4+0+1 ,应该是 5。

使用符号模式可以设置多个项目:who(用户类型),operator(操作符)和 permission(权限),每个项目的设置可以用逗号隔开。 命令 chmod 将修改 who 指定的用户类型对文件的访问权限,用户类型由一个或者多个字母在 who 的位置来说明,如 who 的符号模式表所示:
图片.png

示例3:

将文件 test.txt 设为所有人皆可读取 :

chmod ugo+r        test.txt
chmod a+r          test.txt
chmod r--r--r--    test.txt
chmod 444          test.txt
chmod 100100100    test.txt

示例4:

将文件 test1.txt 与 test2.txt 两个文件设为该文件拥有者,与其所属同一个群体者可写入,但其他以外的人则不可写入 :

chmod ug+w,o-w test1.txt test2.txt

示例5:

为 test.jar 文件拥有者增加可执行权限:

chmod u+x test.jar

示例6:

将目前目录下的所有文件与子目录皆设为任何人可读取 :

chmod -R a+r *

示例7:

设为该文件拥有者,与其所属同一个群体者可读写执,但其他以外的人则只能执行 :

chmod ug=rwx,o=x file
chmod 771 file

示例8:

chmod u+x test.txt (---x------)        为文件拥有者(user)添加执行权限;
chmod g+x test.txt (------x---)        为文件拥有者所在组(group)添加执行权限;
chmod 111 test.txt  (---x--x--x)        为所有用户分类,添加可执行权限;
chmod 222 test.txt(--w--w--w-)        为所有用户分类,添加可写入权限;    
chmod 444 test.txt (-r--r--r--)        为所有用户分类,添加可读取权限;

图片.png

26.liunx开放指定端口及删除指定端口:

1、centos7以下

1)开放指定端口这里以开放的8080端口为例

方法一:
直接编辑/etc/sysconfig/iptables文件

vi /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT
service iptables restart或(systemctl restart iptables.service)(修改完保存退出,重启网卡服务)
service iptables status或netstat -nalp|grep 80(查看端口开放信息)

方法二:
命令行方式
1.开放端口命令: /sbin/iptables -I INPUT -p tcp --dport 8080 -j ACCEPT
2.保存:/etc/rc.d/init.d/iptables save
3.重启服务:/etc/init.d/iptables restart
4.查看端口是否开放:/sbin/iptables -L -n

2)关闭指定端口以8080端口为例

方法一:

sudo iptables -A INPUT -p tcp --dport 8080 -j DROP
sudo iptables -A OUTPUT -p tcp --dport 8080 -j DROP"

方法二:关掉对应的应用程序,则端口就自然关闭了

"kill -9 PID"(PID:进程号)

如:通过"netstat -anp | grep ssh"
有显示: tcp 0 127.0.0.1:2121 0.0.0.0:*LISTEN 7555/ssh
则:“kill -9 7555”

2、centos7

因为centos7默认的防火墙是firewalld防火墙,不是使用iptables,使用默认的firewalld防火墙。
这里以开放的8080端口为例

1)对外开放指定端口(8080)

#添加指定需要开放的端口(8080),设置成功输出:success:
firewall-cmd --add-port=8080/tcp --permanent或firewall-cmd --zone=public --add-port=28080/tcp --permanent
参数解释:
zone=public 作用域
add-port=8080/tcp 添加的端口,格式为:端口/通讯协议
permanent 永久生效,没有此参数则重启后失效
#重载入添加的端口:
firewall-cmd --reload
#查询3306端口是否开启成功,开启成功输出:yes,未开启:no:
firewall-cmd --query-port=8080/tcp

2)对外关闭指定端口(移除8080端口)

firewall-cmd --permanent --remove-port=8080/tcp或firewall-cmd --zone= public --remove-port=80/tcp (public可以不加)
#重载入添加的端口:
firewall-cmd --reload或firewall-cmd --complete-reload
(两者的区别就是第一个无需断开连接,就是firewalld特性之一动态添加规则,第二个需要断开连接,类似重启服务)

3)其他命令:

查看防火墙状态相关

#查看防火墙状态:systemctl status firewalld或者 firewall-cmd --state
#开启防火墙:systemctl start firewalld或service firewalld start 
#关闭防火墙:systemctl stop firewalld
#设置开机启动:systemctl enable firewalld
#停止并禁用开机启动:sytemctl disable firewalld
#查询已开放的端口:netstat  -ntulp | grep 80
#若遇到无法开启
#先用:
systemctl unmask firewalld.service 
#然后:
systemctl start firewalld.service

##27.查看本机网卡:##

ip -brief address show

七、挂载盘操作命令

7.1先查看查看磁盘状况

命令:fdisk

fdisk -l   查看磁盘情况

图片.png

7.2进入需要挂载的磁盘中

命令:fdisk xxx 磁盘路径

    fdisk /dev/vdb                              //对/dev/vdb 进行分区
    Command (m for help):n                      //然后输入n新建分区
    Command action
         e    extended                          //输入e为创建扩展分区
         p    primary partition (1-4)           //输入p为创建逻辑分区
    输入p
    Partion number(1-4):1                      //在这里输入l,就进入划分逻辑分区阶段了;
    First cylinder (51-125, default 51):        //注:这个就是分区的Start 值;这里最好直接按回车,如果您输入了一个非默认的数字,会造成空间浪费;
    Using default value 51
    Last cylinder or +size or +sizeM or +sizeK (51-125, default 125): +200M 注:这个是定义分区大小的,自己计算大小,然后输入
    Command (m for help): w                     //最后输入w回车保存 
    d                                           //如果要删除已保存分区则输出d然后删除指定分区

图片.png

再次输入命令:

fdisk -l

可以看到/dev/vdb1分区刚才所建分区
图片.png

7.3格式化分区

命令:mkfs----指将分区格式化成不同的文件系统

文件系统:指操作系统用于明确存储设备或分区上的文件的方法和数据结构:即在存储设备上组织文件的方法。

Linux下的文件类型有ext2、ext3、ext4、xfs等等

    mkfs -t ext2 /dev/vdb1或 mkfs.ext2 /dev/vdb1     (ext2 格式)两者命令皆可
    mkfs -t ext3 /dev/vdb1或 mkfs.ext3 /dev/vdb1     (ext3 格式)两者命令皆可
    mkfs -t ext4 /dev/vdb1或 mkfs.ext4 /dev/vdb1     (ext4 格式)两者命令皆可
    mkfs -t xfs/dev/vdb1或 mkfs.xfs/dev/vdb1         (xfs  格式)两者命令皆可

格式化好后,我们就可以用mount命令 加载这个分区,然后使用这个文件系统;

7.4加载挂载盘

命令:mount

    mkdir /data                                    新增data数据目录
    mount /dev/vdb1 /data                          将 /dev/vdb1 挂载到 data目录中。
    umount  /dev/vdb1 或者是 umount  /data          将挂载的 vdb1 给卸载掉。注意卸载时一定要退出目录,不然无法进行卸载

7.5设置永久挂载(开机自动挂载)

因为mount挂载在重启服务器后会失效,所以需要将分区信息写到/etc/fstab文件中让它永久挂载

命令:

vi(vim) /etc/fstab

在最后面增加:/dev/vdb1(磁盘分区) /data(挂载目录) xfs(文件格式)defaults 0 0
图片.png

重启系统
命令:

df -h --查看自动挂载成功

图片.png

八、连接ftp或sftp命令

8.1连接ftp服务器

命令:格式:ftp [hostname| ip-address]
1.在linux命令行下输入:ftp xxx.xxx.xxx.xxx(ip地址)
2.服务器询问你用户名和口令,分别输入用户名和相应密码,待认证通过即可。

8.2下载文件

命令:下载文件通常用get和mget这两条命令。

get–单个文件下载

格式:get [remote-file] [local-file]
将文件从远端主机中下载至本地主机中.
如要获取服务器上/Z848/node/20220101/11.txt文件下载到本地/data/ftp/20220126下

    mkdir /data/ftp20220126        新增文件夹
    ftp xxx.xxx.xxx.xxx(ip地址)    服务器询问你用户名和口令,分别输入用户名和相应密码,待认证通过即可。
    cd /Z848/node/20220101         进入ftp服务器下载目录下
    lcd /data/ftp20220126         使用这个命令改变本地服务器当前目录为/data/ftp20220126
    get 11.txt                    下载11.txt这个文件

图片.png
图片.png
图片.png
图片.png

mget–批量下载

格式:mget [remote-files]

ftp> mget *.* (回车)

图片.png

8.3上传文件

a) put–单个文件上传

格式:put local-file [remote-file]
将本地一个文件传送至远端主机中.
如要把本地的/data/ftp20200126/1.bmp传送到远端主机/Z848/node/20220101/目录下,并改名为333.bmp

ftp> put 1.bmp /Z848/node/20220101/333.bmp (回车)      先进入/data/ftp20200126/目录下,在此目录下运行的ftp命令进行连接登录,然后执行这个命令进行文件上传

b) mput–批量文件上传

格式:mput local-files
将本地主机中一批文件传送至远端主机.
如要把本地当前/data/ftp20200126目录下所有bmp文件上传到远端服务器/Z848/node/20220101/目录下 下

    cd /data/ftp20200126                     先进入/data/ftp20200126/目录下,在此目录下运行的ftp命令进行连接登录
    ftp> cd /Z848/node/20220101 (回车)     进入ftp远程/Z848/node/20220101目录下
    ftp> mput *.bmp (回车)                批量文件上传

九、ssh远程登录命令

远程登录命令:ssh

    ssh 192.168.1.100                                     默认利用当前宿主用户的用户名登录
    ssh root@192.168.1.100                                利用远程机的用户登录
    ssh root@192.168.1.100  -o stricthostkeychecking=no   首次登陆免输yes登录
    ssh root@192.168.1.100 "ls /home/root"                当前服务器A远程登录服务器B后执行某个命令
    ssh root@192.168.1.100 -t "sh /home/root/ftl.sh"      当前服务器A远程登录服务器B后执行某个脚本

十、Linux对现有分区进行扩容(LVM 分区扩容)

1)首先查询磁盘使用情况

对/dev/mapper/rootvg-var 进行扩容,目前只有2G容量将扩容到3G

[root@localhost ~]# df -h

图片.png

2)查看 VG(现有卷组)

[root@localhost ~]# vgdisplay

可以看出只有一个卷组,卷组剩余可用11.41G
图片.png

3)搜索已存在的物理卷

[root@localhost ~]# pvscan(搜索已存在的物理卷)

可以看出只有一个卷组物理卷,卷组总大小:48.41G,剩余可用11.41G
图片.png

4)对/dev/mapper/rootvg-var进行扩容增加1G容量

[root@localhost ~]# lvresize -l +1G /dev/mapper/rootvg-var

图片.png

这个时候,lv大小虽然变大了,但是/dev/mapper/rootvg-var文件系统并没有变大,我们还需要使用xfs_growfs (针对xfs文件系统)或resize2fs (针对ext文件系统)来处理下。

[root@localhost ~]# xfs_growfs /dev/mapper/rootvg-var​​​​​​​ 

图片.png

再次查看已成功扩容

[root@localhost ~]# df -h 

图片.png

发表评论

0/200
0 点赞
0 评论
收藏