Linux之常用命令

Linux之常用命令2.常用命令2.1命令格式的说明命令格式:命令\[-选项][参数]参数eg:ls-la/usr说明:大部分命令遵从该格式多个选项时,可以一起写eg:ls–l–als–la简化选项与完整选项(注:并非所有选项都可使用完整选项)eg:ls–allls–a帮助命令:(相当于命令说明书)2.2帮助命令2.2.1man英文:…

大家好,又见面了,我是你们的朋友全栈君。

2. 常用命令

2.1 命令格式的说明

命令格式:命令 \[-选项][参数] 参数 
eg: ls -la /usr 
说明: 
大部分命令遵从该格式 
多个选项时,可以一起写 
eg: ls –l –a ls –la 
简化选项与完整选项(注:并非所有选项都可使用完整选项) 
eg: ls –all ls –a 
帮助命令:(相当于命令说明书)

2.2 帮助命令

2.2.1 man

英文:manual 命令路径:/usr/bin/man 执行权限:所有用户
作用:获取命令或配置文件的帮助信息

语法:man [命令/配置文件]
eg:man ls man services 
(查看配置文件时,不需要配置文件的绝对路径,只需要文件名即可)
调用的是more命令来浏览帮助文档,按空格翻下一页,按回车翻下一行,按q退出。
2.2.2 help

help 查看shell内置命令的帮助信息

eg: help cd
命令名 --help
命令名 --help 列举该命令的常用选项
eg: cp --help

2.3 文件处理命令

2.3.1 cd
英文:change directory 命令路径:内部命令 执行权限:所有用户
cd  切换工作目录
cd - 回到上一次的操作所在位置
cd ~ 回到用户家目录
cd ./  当前目录
cd ../ 回到上一级目录
cd  回到用户家目录
2.3.2 ls

查看目录 ls + 选项 + 目录名
英文:list 命令路径:/bin/ls 执行权限:所有用户

ll 等价于ls -l
-l 列表形式显示 
eg: ls -l /bin 查看根目录下的bin目录下的所有文件或目录以列表的形式查看,并且可以查看文件相关信息
-a 所有文件或目录包括隐藏文件 
eg: ll -a /bin 查看根目录下的bin目录下的所有文件或目录包含隐藏文件
-h 以可读的方式显示文件大小,配合-l使用
eg: ll -h /bin 查看根目录下的bin目录下的所有文件或目录(显示文件大小单位,如KB等)
-s
-A
-sr

解释ll命令后出现的描述信息

-rwxrwxr-x 1 root root 324 8:00 f1 的七个字段分别代表的含义

-:普通文件	d:目录文件	l:软连接文件		c:字符文件		b:块文件
栏位一:权限
栏位二:文件数(普通文件为1,存在硬链接的文件为连接数+自身,目录为包含文件数)
栏位三:拥有者
栏位四:所属组
栏位五:大小(byte表示)
栏位六:创建日期
栏位七:文件名
2.3.3 pwd

英文:print working directory 命令路径:/bin/pwd 执行权限:所有用户
作用:显示当前工作目录
linux下的路径
pwd: 打印当前工作目录(全目录)
绝对路径: 以根目录为开始的目录
相对路径: 相对当前目录的路径

语法: pwd [-LP] 
eg: cd /etc/init.d
pwd [-P]
2.3.4 mkdir

英文:make directories 命令路径:/bin/mkdir 执行权限:所有用户
作用:创建新目录

语法:mkdir [-p] 目录名
-p 父目录不存在情况下先生成父目录 (parents)
eg: mkdir linux/test 如果目录linux不存在,则报错,使用参数-p即可自动创建父目录
创建多个同级目录
eg: mkdir /home/lily/(d1,d2)
2.3.5 touch

命令路径:/bin/touch 执行权限:所有用户
作用:创建空文件或更新已存在文件的时间

语法:touch 文件名 
eg: touch a.txt b.txt touch {a.txt,b.txt} 同时创建多个文件,注意:后面{}中,中间不能有空格
eg: touch "program files" 创建带空格的文件
注意:生产环境中,文件名,一定不要加空格

注意:Linux系统里的文件没有拓展名之分,但规范上自定义文件拓展名以作区分

2.3.6 echo

命令路径:/bin/echo 执行权限:所有用户
作用:查看某些环境变量/给文件增加内容

语法:echo '字符串' >|>> 文件名 
	-e:使转义字符生效
eg: echo $PWD 查看当前的路径
echo 'haha' > test1.txt 将字符串haha添加到test1.txt里面,注意;会将文件原来的内容覆盖
echo 'haha' >> test1.txt 将字符串haha追加到test1.txt中,不会覆盖原来的内容
2.3.7 cp

英文:copy 命令路径:/bin/cp 执行权限:所有用户
作用:复制文件或目录

语法:cp [–rp] 源文件或目录 目的目录
-r -R recursive 递归处理,复制目录
-p 保留文件属性 (原文件的时间不变)
eg:
1.相对路径 cp –R /etc/* . 将etc下的全部内容递归拷贝到当前的目录下
2.绝对路径 cp –R **/**ect/service /root/test/aa/bb
2.3.8 mv

英文:move 命令路径:/bin/mv 执行权限:所有用户
作用:移动文件或目录、文件或目录改名

语法:mv 源文件或目录 目的目录
2.3.9 rm

英文:remove 命令路径:/bin/rm 执行权限:所有用户
作用:删除文件

语法: rm [-rf] 文件或目录
-r(recursive)删除目录,同时删除该目录下的所有文件
-f(force) 强制删除文件或目录 即使原档案属性设为唯读,亦直接删除,无需逐一确认
注意:工作中,谨慎使用rm –rf 命令。

删除当前目录下指定格式文件:

例:删除所有pdf格式文件
find . -name "*.pdf" |xargs rm -rfv
2.3.10 vim编辑器
vim/vi是Unix / Linux上最常用的文本编辑器而且功能非常强大。
只有命令,没有菜单.
VIM工作模式

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BmwCmFzi-1587782266164)(image-20200406123302373.png)]

命令模式:又称一般模式
编辑模式:又称底行模式,命令行模式
2.3.10.1 插入命令
命令 作用
a 在光标后附加文本
A(shift+a) 在本行尾附加文本
i 在光标前插入文本
I(shift+i) 在本行首插入文本
o 在光标下插入新行
O(shift+o) 在光标上插入新行
2.3.10.2 定位命令
命令 作用
:set nu 设置行号
:set nonu 取消行号
gg G 到第一行 到最后一行
nG 到第n行
:n 到第n行
2.3.10.3 保存和退出命令
命令 作用
:W 保存修改
:W new_filename 另存为指定文件,如果文件不存在会直接创建一个新的文件
:W >>a.txt 内容追加到a.txt文件中 文件需存在
:wq 保存修改并退出
shift+zz(ZZ) 快捷键,保存修改并退出
:q! 不保存修改并退出
:wq! 修改保存并退出(文件所有者可忽略文件的只读属性)

eg:

  1. 不保存并退出 :q
  2. 有修改,但是修改后的内容是不保存的 :q!
  3. 有突发情况,导致窗口退出。修改文件之后,直接删除同名的.swp文件
2.3.10.4 删除命令
命令 作用
x 删除光标所在处字符nx 删除光标所在处后n个字符
dd 删除光标所在行,ndd删除n行
:n1,n2d 删除指定范围的行(eg:1,3d删除了123这三行)
dG 删除光标所在行到末尾的内容
D 删除从光标所在处到行尾
2.3.10.5 复制和剪切命令
命令 作用
yy、Y 复制当前行
nyy、nY 复制当前行以下n行
dd 剪切当前行
ndd 剪切当前行以下n行
p、P 粘贴在当前光标所在行下 或行上
2.3.10.6 替换和取消命令
命令 作用
r 取代光标所在处字符
R(shift+r) 从光标所在处开始替换字符,按Esc结束
u undo,取消上一步操作
ctrl+r redo,返回到undo之前
2.3.10.7 搜索和替换命令
命令 作用
/string 向后搜索指定字符串
?string 向前搜索指定字符串
n 搜索字符串下次出现的位置,与搜索顺序相同
N 搜索字符串上次出现的位置,与搜索顺序相反
:%s/old/new/g 全文替换指定字符串
:na,n2s/old/new/g 在一定范围内替换指定字符串

注意:当遇到特殊字符时,需要进行转义处理:比如 . 写成 . * 写成 * ^ 写成 ^

% 指全文,s 指开始,g 指全局替换
起始行,终止行s/要替换的字符串/替换的新的字符串/g 将/g换成/c 询问确认
 eg: : %s/ftp/yang/g 全局替换,把ftp替换为yang
 eg: : 41,44/yang/lee/c 从41行到44行,把yang替换为lee,询问是否替换
 eg: : 41,44/yang/lee/g 同上,不询问,直接替换
 eg: : %s/\/root/\/ROOT/g 把/root替换为/ROOT,遇到特殊字符需要进行转义处理
 eg: : %s#/bin/bash#/bin/ksh/g 把/bin/bash全部替换为/bin/ksh
2.3.10.8 使用替换命令添删注释
:% s/^/#/g 来在全部内容的行首添加 # 号注释 ^代表行首
:1,10 s/^/#/g 在1~10 行首添加 # 号注释
vi里面查命令
:!which cp
vi里面导入命令的结果
:r !which cp
I或者O进入插入模式
2.3.11 ln
  1. 英文: link 命令路径:/bin/ln 执行权限:所有用户
  2. 作用:产生链接文件
  3. 语法:
ln -s [源文件][目标文件] 创建软链接 相当于建立快捷方式 注意:源文件 使用 绝对路径
ln [源文件][目标文件] 创建硬链接 相当于深拷贝
eg: ln -s /etc/service ./service.soft
创建文件/etc/service的软链接service.soft
eg: ln /etc/service /service.hard
创建文件/etc/service的硬链接/service.hard 
  1. 软连接类似于windows下的快捷方式

    软连接文件格式: lrwxrwxrwx. 1 root root 13 Jul 20 07:50 service -> /etc/services

  2. 格式解析(特征):

    • 1代表硬链接数量,如果该文件没有硬链接,就只有本身一个硬链接。

    • 13代表 链接文件的长度

    • 软连接的文件类型是 l(软连接),软连接文件的权限 都是 lrwxrwxrwx

    • -> 箭头指向到源文件

      真正的权限取决于对源文件的权限

      时间值为创建软连接的时间

      软连接可以跨文件系统生成

  3. 硬链接特征

    1. 相当于 cp -p +同步更新
    2. 通过i节点识别,与源文件有相同的inode节点
    3. 硬链接不能跨分区,ln /home/test/issuels /boot/test (错误)
    4. 不能针对目录使用 ln /tmp/ aa.hard (无法将目录/tmp 生成硬链接)
  4. 删除软连接,源文件还在

    rm -rf symbolic_name

  5. node说明

    Linux文件系统中的inode主要用于存放档案和目录的基本信息,当系统创建文件系统的同时会创建大量的inode

2.4 查看命令

2.4.1 cat
英文:concatenate 命令路径:/bin/cat 执行权限:所有用户
作用:显示文件内容,直接显示全部内容
语法:cat [-n][文件名]
-A 显示所有内容,包括隐藏的字符 
-n 显示行号 
eg:cat /etc/services
2.4.2 more
命令路径:/bin/more 执行权限:所有用户
作用:分页显示文件内容
语法:more [文件名]
空格或f 显示下一页
enter键 显示下一行
ctrl+b 返回上一页
q或Q 退出
相关指令:less
2.4.3 head
命令路径:/usr/bin/head 执行权限:所有用户
作用:查看文件前几行(默认10行)
语法:head [文件名]
-n 指定行数
eg:head -20 /etc/services
2.4.4 tail
命令路径:/usr/bin/tail 执行权限:所有用户
作用:查看文件的后几行 
语法:tail [文件名]
-n 指定行数
获取一个大文件的部分文件,可使用head或tail命令
eg: head -n 100 /etc/services >confifig.log 会直接用 /etc/services里面前100行的数据导入
conflflg.log文件中,并覆盖其中的内容
head -n 100 /etc/services >>config.log 会直接用 /etc/services里面前100行的数据导入conflg.log
文件中,并进行内容的追加

2.5 搜索查找命令

2.5.1 find

命令路径:/bin/find 执行权限:所有用户

作用:查找文件或目录

语法:find [搜索路径][匹配条件]

如果没有指定搜索路径,默认从当前目录查找

find命令选项

  1. -name按名称查找

    说明: 精准查找

    在目录/etc中查找文件init
    eg: find /etc -name “init” 
    查询目录下的一层子目录
    find /etc -maxdepth 1 -type d
    
  2. -iname按名称查找

    说明: 不区分大小写

    find查找字符匹配:
    *: 匹配所有
    ?: 匹配单个字符
    在目录/etc中查找以init开头的,且后面有三位的文件
    eg: find /etc -name “init???” 
    模糊匹配的条件,建议使用单引号或双引号括起来。
    如果*被转义,可使用 单双引号括住查询条件,或者使用\*。*
    *eg: find –name "*g"
    
  3. -size按文件大小查找

    默认以block为单位,一个block是512B, 1K=2block

    +大于

    -小于

    不写是等于

    在etc目录下找出小于100MB的文件
    100MB=102400KB=204800block
    eg: find /etc -size -204800 
    查找文件小于20M且以's'开头的
    find ./ -size -20480 -a -name "s*"
    查找大于10K小于1M的文件
    法一:find ./ -size +20 -size -2048 
    法二:find ./ -size +10k -size 1M
    
  4. -type按文件类型查找

    f 二进制文件

    l 软连接文件

    d 目录

    c 字符文件

    eg: find /dev -type c
    

    find查找的基本原则:

    占用最少的系统资源,即查询范围最小,查询条件最精准

    注意: 如果明确知道查找的文件在哪一个目录,就直接对指定目录查找,不查找根目录/

2.5.2 grep

命令路径:/bin/grep 执行权限:所有用户

作用:在文件中搜寻字符串匹配的行并输出

语法:grep [-cinv] '搜寻字符串' filename
选项与参数:
-c :输出匹配行的次数(是以行为单位,不是以出现次数为单位)
-i :忽略大小写,所以大小写视为相同
-n :显示匹配行及行号
-v :反向选择,显示不包含匹配文本的所有行。
eg:grep ftp /etc/services
eg: grep -v ^# /etc/inittab 去掉文件行首的#号
eg: grep -n “init”/etc/inittab 显示在inittab文件中,init匹配行及行号
eg: grep -c“init”/etc/inittab 显示在inittab文件中,init匹配了多少次
管道的功能(过滤:将上一步处理后的结果给下一步)
 find /root | grep a.txt

2.5.3 which

命令路径:/usr/bin/which 执行权限:所有用户

作用:显示系统命令所在目录(绝对路径及别名)

which命令的作用是,在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。也就是说,使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令

eg: which ls 出现下面的信息,是ls指令的详情,说明ls指令是存在的
alias ls='ls --color=auto'
/bin/ls
eg: which zs 出现下面的信息,说明zs指令是不存在的
/usr/bin/which: no zs in (/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/ch/bin)
2.5.4 whereis

命令路径:/usr/bin/whereis 执行权限:所有用户

作用:搜索命令所在目录 配置文件所在目录 及帮助文档路径

eg: which passwd 和 whereis passwd 
eg: 查看/etc/passwd配置文件的帮助,就用 man 5 passwd

2.6 打包压缩命令

2.6.1 gzip&gunzip

英文:GNU zip 命令路径:/bin/gzip 执行权限:所有用户

作用:压缩(解压)文件,压缩文件后缀为.gz(出于规范)

gzip只能压缩文件,不能压缩目录;不保留原文件,gunzip解压同样不保留压缩包

压缩等级默认为6->1

语法:gzip [选项] 文件
选项:
    -c :create 建立压缩档案的参数;
    -x : 解压缩压缩档案的参数;
    -z : 是否需要用gzip压缩;
    -v: 压缩的过程中显示档案;
    -f: 置顶文档名,在f后面立即接文件名,不能再加参数

比如将/source/kernel.tgz解压到 /source/linux-2.6.29 目录
tar zxvf /source/kernel.tgz -C /source/ linux-2.6.29
-d将压缩文件解压(decompress)
解压使用gzip –d或者 gunzip
2.6.2 bzip2&bunzip2

命令路径:/usr/bin/bzip2 执行权限:所有用户

作用:压缩(解压)文件,压缩文件后缀为.bz2

语法:bzip2 [-k][文件] 
-k: 产生压缩文件后保留原文件(压缩比高)
-d: 解压缩的参数(decompress)
解压使用bzip2 –d或者 bunzip2
2.6.3 zip&unzip

命令路径:/usr/bin/zip 执行权限:所有用户

作用: 压缩(解压)文件或目录,压缩文件后缀为.zip,保留源文件

语法: zip 选项[-r][压缩后文件名称][文件或目录] 
-r压缩目录
eg:zip services.zip /etc/services 压缩文件
zip -r test.zip /test 压缩目录
如果不加-r选项,压缩后的文件没有数据。
解压使用unzip ,注意如果解压时,已经存在与压缩文件同名的目录名,默认不会进行覆盖,如果选择Y,会进行覆盖
2.6.4 tar

命令路径:/bin/tar 执行权限:所有用户

作用:文件、目录打(解)包

注意:打包并不是压缩,而打包过程中可以一并执行压缩

语法:tar [-z|j|J] [c|t|v] [f] 压缩后文件名 文件或目录
-c 建立一个压缩文件的参数指令(create),后缀是.tar
-x 解开一个压缩文件的参数指令(extract)
-z 以gzip命令压缩/解压缩 
-j 以bzip2命令压缩/解压缩
-v 压缩的过程中显示文件(verbose)
-f file 指定文件名,必选项

2.6.5 示例

  1. 简单理解
tar –cf tar –xf 单独的打包 ,解包 
gzip bzip2 打包之后,进行压缩 
tar –zcvf tar -zxvf 一步到位 
tar -z 以gzip打包目录并压缩 文件格式.tar.gz(.tgz)
tar -j 以bzip2打包目录并压缩 文件格式.tar.bz2
  1. 示例
eg: tar -zcvf dir1.tar.gz dir1 使用gzip将目录dir1压缩成一个打包并压缩文件dir1.tar.gz
eg: tar -zxvf dir1.tar.gz -C(大写的) /root 解压到指定的/root目录
eg: tar -cvf bak.tar . 将当前目录的文件打包为bak.tar
eg: tar -xvPf bak.tar 解压到当前目录,默认是相对路径,P意思是支持绝对路径
eg: tar -cvPf bak.tar /a/b 将/a/b路径压缩成bak.tar
eg: tar -zcvf bak.tar.gz bak.tar 或 gzip bak.tar 使用gzip将打包文件bak.tar压缩为bak.tar.gz
eg: tar -jcvf bak.tar.bz2 bak.tar 或 bzip2 bak.tar 使用bzip2将打包文件bak.tar压缩为bak.tar.bz2
eg: tar -rvf bak.tar /etc/password 将/etc/password追加文件到bak.tar中
eg: tar -cjvf test.tar.bz2 test 生成test.tar.bz2的压缩文件
eg: tar -xjf test.tar.bz2 解压
  1. 最常用: tar + gzip

tar –zcvf 压缩

tar –zxvf 解压

补充:源文件是保留的,不会被删除

2.7 date

  1. date命令是显示或设置系统时间与日期。

  2. 查看系统时间直接使用 date

  3. 以自定义的方式显示系统时间:date +’%Y-%m-%d %H:%M:%S’

    注意:+与字符串之间不能有空格,与date之间要有空格

  4. 常用格式:

    1. date:显示当前时间
    2. date +%Y:显示当前年份
    3. date +%m:显示当前月份
    4. date +%d:显示当前是哪一天
    5. date +%Y%m%d date +%Y/%m/%d …:显示当前年月日各种格式
    6. date “+%Y-%m-%d %H:%M:%S”:显示年月日时分秒
    7. date “+%x”:显示年月日
    8. date +”+%X”:显示24时制时间
  5. 设置时间

    date -s “2015-5-8 19:48:00”

    eg:在当前日期上日期加一天

    date +%Y%m%d –date=”+1 day”

    说明:或者单独更新年月日或者更新时间都可以

  6. 同步到bios,重启之后才能继续生效(同步系统时间)

    eg: hwclock -w

2.8 系统关机命令

2.8.1 shutdown [选项]时间
选项:
-c: 取消前一个关机命令 
-h: 关机 
-r: 重启
eg:
shutdown -h now 立即关机 
shutdown -h 20:30 定时关机
shutdown +2 "the machine will shutdown in 2 mins" 两分钟后关机并发送邮件提示
其他关机命令 halt		poweroff	init 0
2.8.2 reboot 重启命令1
eg: reboot 重启系统 
reboot -h now 立即重启
2.8.3 init 6 重启命令2

注意:生产环境中,关机命令和重启命令谨慎执行。

2.8.4 其他命令
systemctl suspend :系统挂起命令
uname -r 查看系统版本信息 
basename a/b/c/test.txt 显示:test.txt 查看命令中的名字 
dirname a/b/c/test.txt 显示: a/b/c/ 查看命令中的路径 
切换执行等级:
linux有七种执行等级:
init 0: 关机
init 3: 纯文本模式
init 6: 重新启动

2.9 Linux的快捷键命令

善于查看man help等帮助文档
利用好Tab键 自动补全		在输入命令时两次Tab会提示可执行的操作(具体情况自行考虑)
掌握好一些快捷键
ctrl + c(停止当前进程)
ctrl + z 挂起当前进程,放后台			fg:调出挂起的进程
ctrl + r(查看命令历史) history
ctrl + l(清屏,与clear命令作用相同)
对当前命令行的操作:
方向箭头 上 下 可以查看执行过的命令并再次使用
ctrl + a 行首 ctrl + e 行尾 ctrl+d 清除当前的字符
ctrl + k 清除光标后面的内容 ctrl+ w 清除光标前面的单词
小技巧: linux 不进去系统更改root密码 
1.开机时按'e'键进入grub 
2.在grub选项菜单按e进入编辑模式 
3.编辑kernel那行 输入” 1”(空格1),然后按enter键。 
4.按b重启 
5.进入后执行下列命令 
passwd root 
passwd root (配置root的密码)——>Enter new unix password:输入新的密码——>init 6

2.10 sudo权限的配置

2.10.1 作用
root把本来只能超级用户执行的命令赋予普通用户执行。
sudo的操作对象是系统命令
2.10.2 修改sudoers文件

执行 visudo 这里实际修改的是/etc/sudoers文件

sudoers文件内部的信息解释

root ALL=(ALL) ALL #用户名 被管理主机的地址(不是访问地址)=(可使用的身份) 授权命令(绝对路径)
%wheel ALL=(ALL) ALL #%组名 被管理主机的地址=(可使用的身份) 授权命令(绝对路径)
\#sudo -l 查看可用的sudo命令

注意:

sudo命令用来以其他身份来执行命令,预设的身份为root。在/etc/sudoers中设置了可执行sudo指令的用户。

若其未经授权的用户企图使用sudo,则会发出警告的邮件给管理员。

用户使用sudo时,必须先输入密码,之后有5分钟的有效期限,超过期限则必须重新输入密码。

2.10.3 语法
sudo(选项)(参数)
选项
-b:在后台执行指令;
-h:显示帮助;
-H:将HOME环境变量设为新身份的HOME环境变量;
-k:结束密码的有效期限,也就是下次再执行sudo时便需要输入密码;
-l:列出目前用户可执行与无法执行的指令;
-p:改变询问密码的提示符号;
-s:执行指定的shell;
-u<用户>:以指定的用户作为新的身份。若不加上此参数,则预设以root作为新的身份;
-v:延长密码有效期限5分钟;
-V :显示版本信息。
2.10.4 实例
  1. 说明信息

    1. 配置sudo必须通过编辑**/etc/sudoers**文件,而且只有超级用户才可以修改它,还必须使用visudo编辑。

    2. 之所以使用visudo有两个原因

      • 它能够防止两个用户同时修改它
      • 它也能进行有限的语法检查
    3. 所以,即使只有你一个超级用户,你也最好用visudo来检查一下语法。 visudo默认的是在vi里打开配置文件,用vi来修改文件。我们可以在编译时修改这个默认项。

    4. visudo不会擅自保存带有语法错误的配置文件,它会提示你出现的问题,并询问该如何处理,错误提示:sudoers file:syntax error,line 22<<

      此时我们有三种选择:

      • 键入“e”是重新编辑
      • 键入“x”是不保存退出
      • 键入“Q”是退出并保存。如果真选择Q,那么sudo将不会再运行,直到错误被纠正。
  2. 实例1

    让用户hd1可以通过sudo执行所有root可执行的命令。
    以root身份用visudo打开配置文件,可以看到类似下面几行:

    ALL=(ALL)ALL
    这里root有所有权限,只要仿照现有root的例子就行,我们在下面加一行(最好用tab作为空白)
    hd1 ALL=(ALL) ALL 
    hd1是指定的用户
        第一个ALL是指网络中的主机,它指明hd1可以在此主机上执行后面的命令。 
        第二个括号里的ALL是指目标用户,也就是以谁的身份去执行命令,通常我们指定为all即可。 
        最后一个ALL当然就是指命令名了
    hd1  ALL=(ALL) NOPASSWD:ALL
    
    保存退出后,切换到hd1用户,我们用它的身份执行命令:
    sudo ls /root 在ls前面添加sudo可以让hd1拥有root的权限,查看root目录
    

    注意:修改完配置文件和仍然需要先以sudo 开始执行命令

    实例2

    我们限制一下hd1的权利。比如我们只想让他像root那样使用ls和ifconfifig,继续修改sudoers文件
    db1 ALL= /sbin/ifconfifig, /bin/ls, /usr/bin/sudo
    再次切换到hd1用户,执行命令:
    sudo head -5 /etc/shadow 这是提示hd1没有权限执行这个命令.
    
  3. 免密配置

    我们这样再添加一行配置文件

    hd1 ALL=NOPASSWD: /bin/cat/ls, /usr/bin/sudo
    再来sudo一下:不再需要密码
    

2.11 防火墙,网络,服务启停命令

2.11.1 修改ip地址

说明: (以网络方式为NAT示例)

1.图形化界面

2.使用命令行修改配置文件

vi /etc/sysconfifig/network-scripts/ifcfg-ens33
BOOTPROTO=static static  dhcp 动态ip none 不设置,默认静态ip
HWADDR=00:0C:29:3D:B0:9B 电脑的mac地址,建议去掉
UUID=6f89eb5e-bffff4-4f6b-a045-b7722bd188fc 电脑的UID 建议去掉
ONBOOT=yes 是否开机自动使用
nm_controlled=yes 设置network manager的参数,实时生效,修改后无需要重启网卡立即生效。建议删掉
IPADDR=192.168.2.129
NETMASK=255.255.255.0 或者 PREFIX=24
GATEWAY=192.168.2.2 #网段2任意,IP地址2固定,网段为vmnet8的设置的IP网段
DNS1=114.114.114.114 国内的DNS
DNS2=8.8.8.8 谷歌的DNS
defroute=yes 默认的路由 建议删掉
IPV4_FAILURE_FATAL=yes 如果为yes,则ipv4配置失败禁用设备 建议删掉

3.重启网络生效:service network restart

2.11.2 关闭防火墙

1.临时生效,重启后复原

eg: 关闭:systemctl stop firewalld 
eg: 开启:systemctl start firewalld 
eg: 查看状态:systemctl status firewalld

2.非临时性生效,重启后永久性生效

eg: 关闭:systemctl disable firewalld 
eg: 开启:systemctl enable firewalld 
eg: 查看状态:systemctl status firewalld
2.11.3 关闭NetworkManager

注意:如果ifcfg-eth0中的nm_controlled设置成no或者删掉了,NetworkManger就没有了.

eg: 启动:service NetworkManager start
eg: 临时关闭:service NetworkManager stop
eg: 开机启动:chkconfifig NetworkManager on
eg: 禁用开机启动:chkconfifig NetworkManager offff
eg: 检查networkmanager服务是否已经正常开启: chkconfifig | grep networkmanager
eg: 删除networkmanager : chkconfifig NetworkManager --del

注意:通常从事大数据会关闭NetworkManager

2.11.4 网络通信命令
2.11.4.1ping

命令路径:/bin/ping 执行权限:所有用户

作用:测试网络的连通性

语法:ping 选项 IP地址
-c 指定发送次数 
ping 命令使用的是icmp协议,不占用端口
eg: ping -c 3 127.0.0.1
ping一个ip地址并打印到一个文件中[后端挂起]
ping www.baidu.com > ~/f3 [&]
2.11.4.2ifconfig

英文:interface configure 命令路径:/sbin/ifconfig 执行权限:root

作用:查看和设置网卡网络配置

语法:ifconfig [-a][网卡设备标识] 
-a:显示所有网卡信息
ifconfifig 网卡名字 查看单个的网卡信息
2.11.4.3netstat

英文:network statistics 命令路径:/bin/netstat 执行权限:所有用户

作用:主要用于检测主机的网络配置和状况

-a (all)显示所有连接和监听端口
-t (tcp)仅显示tcp相关选项
-u (udp)仅显示udp相关选项
-n 使用数字方式显示地址和端口号
-p 显示socket的PID和进程的名字
-l (listening)显示监控中的服务器的socket
eg: netstat -tlnu 查看本机监听的端口
eg: tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN
协议 待收数据包 待发送数据包 本地ip地址:端口 远程IP地址:端口
netstat –antpl 
eg: netstat -ntlp | grep httpd 查看某一个程序的端口信息
eg: netstat -atnp | grep httpd 
eg: netstat -atnp | grep 80 查看端口
2.11.5 修改主机名

临时生效:

hostname 主机名

注意:通过调用logout先退出,再登录—写入内存

永久生效:修改配置文件

]# hostnamectl set-hostname hostname01
2.11.6 修改映射关系

修改主机名和ip地址之间的映射关系

执行 vi /etc/hosts 进入hosts文件,加入代码

主机ip 主机名

192.168.10.111 hostname01

192.168.10.112 hostname02

192.168.10.113 hostname03

最好让主机名字,虚拟机名字,网络连接名字保持一致

2.12 磁盘的操作命令

2.12.1 df命令

作用:用于查看Linux文件系统的状态信息,显示各个分区的容量、已使用量、未使用量及挂载点等信息。看剩余空间

语法:df [-hkam][挂载点(就是分区的意思)]
-h(human-readable)根据磁盘空间和使用情况 以易读的方式显示 KB,MB,GB等 
-k 以KB 为单位显示各分区的信息,默认
-m 以MB为单位显示信息
-a 显示所有分区包括大小为0 的分区
2.12.2 du命令

作用:用于查看文件或目录的大小(磁盘使用空间)

语法:du [-ahs][文件名目录]
-a 显示子文件的大小
-h 以易读的方式显示 KB,MB,GB等
-s summarize 统计总占有量
eg: du -a(all) /home 显示/home 目录下每个子文件的大小,默认单位为kb
eg: du -h /home 以K,M,G为单位显示/home 文件夹下各个子目录的大小
eg: du -sh /home 以常用单位(K,M,G)为单位显示/home 目录的总大小 -s summarize
df命令和du命令的区别:
df命令是从文件系统考虑的,不仅考虑文件占用的空间,还要统计被命令或者程序占用的空间。
du命令面向文件,只计算文件或目录占用的空间。
eg: 执行下面的命令查看区别
df –h /
du –sh /
2.12.3 free

作用:查看内存及交换空间使用状态

语法: free [-kmg]
选项:
-k: 以KB为单位显示,默认就是以KB为单位显示
-m: 以MB为单位显示
-g: 以GB为单位显示
动态显示当前内存使用情况
eg:free -s 3
清理缓存命令:
echo 1 > /proc/sys/vm/drop_caches

2.13 用户与组的创建和删除

Linux引入user概念,用于管理账号的基本信息,例如密码,UID(唯一标识符,用户名对应uid,uid对应密码),所属组,主目录,一般存在 /etc/password(基本用户信息) 和/etc/shadow(加密后密码)

Linux引入group概念,用于管理多用户间的关系,例如分组,使用权限等,一般存在 /etc/group

2.13.1 su
语法: su 用户名
作用: 切换用户
eg: su root 切换回root用户
注意:如果是root用户,每次都会要求输入密码.普通的用户可以直接切换
2.13.2 useradd

添加用户

语法:useradd [选项] 用户名
选项:
	-c common:描述信息
	-d:目录:指定主目录
	-g:指定用户所属组
	-G:附加组
	-s:指定shell环境
	-u:指定用户ID

系统预留1000个用户,普通用户从uid1000以后开始。

注意:普通用户不能通过该方法增加用户,会警告Permission denied

2.13.3 passwd

修改密码命令

语法:passwd [选项][用户名]
用户密码:生产环境中,用户密码长度8位以上,设置大小写加数字加特殊字符,要定期更换密码。
    -c common:描述信息
    -d:目录:指定主目录
    -g:指定用户所属组
    -G:附加组
    -s:指定shell环境
    -u:指定用户ID
2.13.4 userdel

删除用户(不能删除当前使用的用户,若删除需切换用户)

-r 删除账号时同时删除宿主目录(remove)
一般情况下都需要这样做

注意:如果需要删除当前用户

做法:先跳到当前用户下面,执行exit 或 exit 用户名。这时会自动跳回root界面。

如果还是无法删除,可以将系统重启

2.13.5usermod
格式:usermod [选项] [用户名]
	-l:更名
	-d:更改组目录
eg:usermod -l lily -d /home/lily lucy
2.13.6 groupadd

用于添加组

-g 指定gid
2.13.7 groupmod

用于修改组

-n 更改组名(new group)
-g 指定组ID
-o 配合-g 用-g的组ID更改指定组的名字
groupmod -n new_gname old_gname
2.13.8 groupdel

用于删除组

useradd -g hadoop hdfs
groupdel hadoop

如果要删除的组归属于某一个用户的所属组,则不能删除该组

解决方法:修改该用户主组的ID,之后删除需要删除的组(将用户移出该组)

2.14 进程管理命令

2.14.1 进程和程序的区别

1.程序是静态概念,本身作为一种软件资源长期保存;而进程是程序的执行过程,它是动态概念,有一定的生命期,是动态产生和消亡的。

2.程序和进程无一一对应关系。一个进程在活动中可有顺序地执行若干个程序。

2.14.2 父进程与子进程

1.子进程是由一个进程所产生的进程,产生这个子进程的进程称为父进程。

2.在Linux系统中,使用系统调用fork创建进程。fork复制的内容包括父进程的数据和堆栈段以及父进程的进程环境。

3.父进程终止子进程自然终止。

2.14.3 进程和线程的区别

进程: 就是正在执行的程序或命令,每一个进程都是一个运行的实体,都有自己的地址空间,并占用一定的系统资源。

线程: 轻量级的进程;进程有独立的地址空间,线程没有;线程不能独立存在,它由进程创建;相对讲,线程耗费的cpu和内存要小于进程。

进程管理的作用:判断服务器的健康状态;查看系统所有的进程;杀死进程.

2.14.4 前台进程和后台进程

前台进程:

在Shell提示处打入命令后,创建一个子进程,运行命令,Shell等待命令退出,然后返回到对用户给出提示符。这条命令与Shell异步运行,即在前台运行,用户在它完成之前不能执行另一个命令。

后台进程:

在Shell提示处打入命令,若后随一个&,Shell创建的子进程运行此命令,但不等待命令退出,而直接返回到对用户给出提示。这条命令与Shell同步运行,即在后台运行。后台进程必须是非交互式的。

2.14.5 ps命令

作用:查看系统中的进程信息

语法:ps [-auxle]
常用选项
a:显示所有用户的进程
u:显示用户名和启动时间
x:显示没有控制终端的进程
e:显示所有进程,包括没有控制终端的进程
l:长格式显示
2.14.6 查看系统中所有进程
ps aux #查看系统中所有进程,使用BSD操作系统格式,unix
ps -le #查看系统中所有进程,使用Linux标准命令格式
eg: ps -u or ps -l 查看隶属于自己进程详细信息
eg: ps aux | grep sam 查看用户sam执行的进程
eg: ps -ef | grep init 查看指定进程信息
2.14.7 pstree

作用:查看当前进程树

语法:pstree [选项]
-p 显示进程PID
-u 显示进程的所属用户
2.14.8 top

作用:查看系统健康状态

显示当前系统中耗费资源最多的进程,以及系统的一些负载情况。

语法:top [选项]
-d 秒数,指定几秒刷新一次,默认3秒(动态显示)
2.14.9 kill

作用:关闭进程

语法:kill [-选项] pId
eg: kill -9 进程号(强行关闭) 常用
eg: kill -1 进程号(重启进程)
eg: killall -l 关闭所有进程(忽略进程名的大小写)
2.14.10 w

作用: 查看用户信息

语法: w 用户名
eg: w root
显示:
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT 
root pts/0 10.0.158.3 06:02 0.00s 0.13s 0.00s w root

解释:

JCPU:以终端代号来区分,该终端所有相关的进程执行时,所消耗的CPU时间会显示在这里

PCPU:CPU执行程序耗费的时间

WHAT:用户正在执行的操作

2.14.11 nohup

作用: 使进程在用户退出登陆后仍旧继续执行,nohup命令将执行后的数据信息和错误信息默认储存到文件nohup.out中

语法: nohup program & &在后台运行的意思
eg: nohup ping www.baidu.com &
使用 ps -ef | grep ping 查看当前的ping进程
2.14.12 uptime

作用: 查看负载

例如: 使用uptime确定是服务器还是网络出了问题。如果网络应用程序运行,运行uptime来了解系统负载是否很高。如果负载不高,这个问题很有可能是由于网络引起的而非服务器。

语法: uptime
eg: 执行: uptime
显示: 06:32:04 up 19:57, 4 users, load average: 0.00, 0.01, 0.00
解释: 系统时间 用户数量 服务器在过去的1分钟、5分钟、15分钟的系统平均负载值

2.15 文件权限命令

2.15.1 三种基本权限

r 读权限(read)

w 写权限(write)

x 执行权限 (execute)

2.15.2 权限说明

所有者 所属组 其他人

第1位:文件类型(d 目录,- 普通文件,l 链接文件)

第2-4位:所属用户(所有者)权限,用u(user)表示

第5-7位:所属组权限,用g(group)表示

第8-10位:其他用户(其他人)权限,用o(other)表示

第2-10位:表示所有的权限,用a(all)表示

eg: -rw-r–r–. 1 root root 3664 Nov 30 17:42 CentOS-Vault.repo.bak

第十一位的1代表硬链接数

字符 权限 数字表示 对文件的含义 对目录的含义
r 读权限 4 可以查看文件内容 可以列出目录的内容(ls)
w 写权限 2 可以修改文件内容 可以在目录中创建删除文件(mkdir,rm)
x 执行权限 1 可以执行文件 可以进入目录(cd)

新建文件默认权限是664,新建目录默认权限是775

补充:对目录来说,必须同时有写权限和执行权限才能创建或删除目录。

对于文件,我们有执行权限的命令:
r-cat,more,head,tail,less
w-echo,vi
x-命令,脚本
对于目录,我们有执行权限的命令:
r-ls
w-touch,mkdir,rm,rmdir
x-cd
能删除文件的权限是必须对该文件所在的目录有wx权限。
2.15.3 chmod

用于权限更改(只有文件拥有组和超级用户才可以使用该方法来修改权限)

英文:change mode (change the permissions mode of a file)

作用:改变文件或目录权限

语法:
法1.chmod [{ugoa}{+-=}{rwx}][文件名或目录] 
+代表增加权限 -代表剥夺权限 =代表赋予权限
法2.chmod [mode=421][ 文件或目录]

参数:
-R 下面的文件和子目录做相同权限操作(Recursive递归的)
1.root
2.文件所有者
-a:所有成员
-u:拥有者
-g:拥有组成员
eg: chmod u+x a.txt
eg: chmod u+x,o-x a.txt
用数字来表示权限(r=4,w=2,x=1,-=0)
eg: chmod 750 b.txt
rwx和数字表示方式能随意切换

注意:root用户是超级用户,不管有没有权限,root都能进行更改。用普通用户测试权限。

不能用一个普通用户去修改另一个普通用户的权限。

2.15.4 chown

用于更改所有者(仅超级管理员可以使用)

英文:change file ownership

作用:更改文件或者目录的所有者

语法 : chown user[:group] file...
-R : 递归修改拥有者
参数格式 : user 	新的档案拥有者的使用者 ID
group : 新的档案拥有者的使用者群体(group)
eg:chown lee file1 把file1文件的所有者改为用户lee
eg:chown lee:test file1 把file1文件的所有者改为用户lee,所属组改为test
eg:chown –R lee:test dir 修改dir及其子目录的所有者和所属组
2.15.5 chgrp

用于改变所属组(所有者和超级管理员可以使用)

英文:change file group ownership

作用:改变文件或目录的所属组

语法 : chgrp [group] file...
eg: chgrp root test.log 把test.log的所属组修改为root

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/140095.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号