Linux(持续更新)

文章目录

  • 虚拟机安装—vmware
  • 下载安装Linux
    • Ubuntu
    • CentOS
    • 安装
    • linux系统拷贝
  • vmtools:共享文件
    • 作用
    • 设置共享文件夹
  • 远程Linux客户端
    • Xshell下载-安装
    • Xshell登录
      • Xshell卡顿
    • XFTP安装
  • Linux常用命令
    • 命令基本格式
    • 内置命令与外部命令
    • 关机重启
    • 输出和输入
      • 输出-echo
      • 输出-printf
      • 读取-read
      • 管道
      • 输入和输出的重定向
        • 输出重定向
        • 输入重定向
    • 目录级文件指令
      • 绝对路径与相对路径
      • Linux的目录结构
      • 常用指令
        • 显示目录下的内容:ls
        • 切换目录:cd
        • 创建目录:mkdir
        • 删除目录:rmdir
        • 树形结构显示目录文件:tree
      • 文件操作命令
        • 创建文件:touch
        • 查看文件:cat
        • 分屏显示文件:more
        • 分行显示:less
        • 显示文件头n行:head
        • 显示文件末尾行数:tail
        • 建立文件链接:ln
      • 目录和文件都能操作的命令
        • 删除目录|文件:rm
        • 复制:cp
      • 改变文件权限:chmod
      • 改变文件拥有者:chown
      • 改变文件拥有组:chgrp
    • 字符处理
      • 管道符
      • grep搜索
      • 使用sort排序
      • 使用uniq去重
      • cut截取文本
      • tr文本转化
      • paste文件合并
      • split文件分割
  • 账号管理
    • linux三种用户
    • 登录或注销
    • 用户操作
      • 新增用户:useradd
      • 修改密码:passwd
      • 修改用户:usermod
      • 删除用户:userdel
      • 新增用户组:groupadd
      • 删除用户组:groupdel
      • 检查用户信息
    • 账号添加sudo权限
  • 任务例行化运行
    • 单次运行任务:at
    • 周期执行任务:cron
  • 其他
    • 命令换行
    • Mac里添加环境变量

虚拟机安装—vmware

下载链接:https://www.vmware.com/cn/products/workstation-pro.html
点击试用下的下载按钮下载安装即可,安装快完成界面,网上搜下版本的许可证安装即可;

下载安装Linux

Ubuntu

镜像下载链接:https://ubuntu.com/download/desktop

CentOS

阿里镜像链接:https://mirrors.aliyun.com/centos/?spm=a2c6h.13651104.0.0.77ea12b2VC6sCP
直接点击下载iso镜像,或者下载种子用迅雷下载;
Linux(持续更新)_第1张图片

安装

打开vmware,新建虚拟机,加载镜像,一路下一步设置即可(内存cpu足够,可以适当大点);
发现20版本ubuntu,xshell登录不上,换上centos立马就好了,如果使用xshell和xftps建议安装centos

linux系统拷贝

可以直接拷贝目录虚拟机加载拷贝目录,也可以通过虚拟机克隆;

vmtools:共享文件

作用

  1. 可以直接粘贴命令在windows和centos系统之间
  2. 可以设置windows和centos的共享文件夹,共享的文件夹linux访问在/mnt/hgfs/目录下

设置共享文件夹

vm虚拟机 -> 设置 -> 选项 -> 共享文件夹 -> 设置共享文件夹,勾选总是启用
Linux(持续更新)_第2张图片

注意事项:实际开发中,文件的上传下载是需要使用远程方式完成的;

远程Linux客户端

  • Xshell和XFTP适用于windows系统,mac不适用;

远程登录客户端主要有Xshell6,Xftp6(远程下载上传),其他工具类似;
实际应用场景:linux服务器开发小组共享,正式上线的项目运行在公网;

Xshell下载-安装

free-for-home-shcool版本下载链接:
https://www.netsarang.com/en/free-for-home-school//

  1. 进入网站
  2. 输入姓名及邮箱,点击下载(勾选‘Both’是两个都下载),网页会给邮箱推送确认信息
    Linux(持续更新)_第3张图片
  3. 打开收到的邮件,点击链接下载Xshell
  4. 打开安装程序,一路点击下一步安装即可;
    Linux(持续更新)_第4张图片

Xshell登录

  1. 查看服务器ip

登录需要提供服务器的ip地址,可以服务器上可以通过ifconfig命令查看ip地址,比如我这里的ip是:192.168.79.128
Linux(持续更新)_第5张图片

  1. 测试客户端电脑与服务器ip通信

打开客户端终端,使用ping命令,确认客户端与服务器ip通信ping 192.168.79.128
Linux(持续更新)_第6张图片
3. 打开Xshell客户端,新建-连接

  • 名称:随意填写
  • 主机:服务器的ip地址
    Linux(持续更新)_第7张图片
  1. 点击“连接”,登录服务器,点击左侧的会话输入账号密码登录;

Xshell卡顿

连接服务器后,命令行输入卡顿解决方案,键盘敲个半天没反应(我的是第一条问题):
参考链接:https://blog.csdn.net/qq_36287953/article/details/118582271

  1. Xshell输入慢的问题有可能是由ssh的服务端在连接时会自动检测DNS环境是 一致所导致的。
    vim /etc/ssh/sshd_config 将注释UseDNS=yes 去掉注释符,并将yes替换成为no。最后重启sshd服务systemctl restart sshd

  2. 设置:Xshell界面点击 工具 – 选项 – 高级 -会话 – 勾选 使用单进程模式以提高性能*

也可以使用Git Bash登录服务器,命令:ssh 用户名@服务器IP
连接前提:服务器开启了 ssh 服务
ssh [email protected]

XFTP安装

安装、设置基本跟XSHELL一样,一路下一步;

Linux常用命令

命令基本格式

[root@localhost ~]# 命令 [选项] [参数]

[root@localhost ~]#提示符含义:

  • root:当前登录的用户,这里是root
  • @:分隔符,没特别含义
  • localhost:当前系统的简写主机名
  • ~:代表当前所在目录,这里是家目录
  • #:登录的用户权限等级,超级用户是#,普通用户是$

其他说明:
命令中的[]代表是可选的;
Linux的选项分为短格式选项(-l)和长格式选项(–all);短格式选项的一般是英文的缩写,用一个减号调用;
ls -l:短格式选项
ls --all:长格式选项

命令的选项用于调整命令功能,而命令的参数是这个命令的操作对象

内置命令与外部命令

Linux的命令按照来源方式分为两种:Shell内置命令和外部命令。

  • Shell内置命令:
    Shell自带的命令,这些命令是没有执行文件的,比如cd命令;
  • 外部命令:
    由程序员单独开发的,是外来命令,所以会有命令的执行文件。

关机重启

shutdown -h now立刻进行关机,这个h是halt停止的意思
shutdown -h 11分钟后关机
shutdown -r now现在重启计算机,reboot
halt关机,作用和上面一样
reboot重启
sync把内存的数据同步到磁盘
不管是重启还是关闭更新,首先都会运行sync命令,把内存中的数据写到磁盘中;

输出和输入

输出-echo

显示字符串信息,也可以添加-e参数识别\后面的转义符号含义。其中\033或\e后面可以跟终端编码,终端编码可以用于定义终端的字体颜色、背景颜色、定位光标等。
\033或\e后面跟不同的代码可以设置不同的终端属性,1m是让终端粗体显示字符串,后面的OK就是需要显示的字符串内容,最后\033[0m是在加粗输出OK后,关闭终端的属性设置。如果最后没有使用0m关闭属性设置,则之后终端中所有的字符串都使用粗体显示。
Linux(持续更新)_第8张图片

# 打印\t换行符
echo -e "hello\tworld"
echo -e "\033[1m加粗显示\033[0m"
echo -e "\e[4m下划线\e[0m"
echo -e "\e[5m闪烁显示\e[0m"
echo -e "\e[30m黑色显示\e[0m"
echo -e "\e[31m红色显示\e[0m"
echo -e "\e[32m绿色显示\e[0m"
echo -e "\e[33m棕色显示\e[0m"
echo -e "\e[34m蓝色显示\e[0m"
echo -e "\e[35m紫色显示\e[0m"
echo -e "\e[36m蓝绿显示\e[0m"
echo -e "\e[37m亮灰显示\e[0m"
echo -e "\e[42m绿色背景显示\e[0m"
echo -e "\e[44m蓝色背景显示\e[0m"
echo -e "\e[33;44m绿色字体蓝色背景显示\e[0m"

还可以使用H定义位置属性,比如第3行第3列显示
echo -e "\e[3:2H第3行第2列"
echo -e "\e[3H第3行开头位置"

输出-printf

该命令可以格式化输出数据,打印默认不换行。printf "\d" 12345
Linux(持续更新)_第9张图片
如需换行:
printf "|%-10d|\n" 10010d表示10个长度,不足用空格填补,100左对其
右对齐:printf "|%10d|\n" 100
右对齐

# 打印小数
printf "%f\n" 1.23456
# 保留两位小数
printf "%.2f\n" 1.23456
# 右对齐,8位长度,保留两位小数
printf "%8.2f\n" 1.23456
# 左对齐,8位长度,保留两位小数
printf "%-8.2f\n" 1.23456

读取-read

read [选项] [变量名]
如果不指定变量名,默认是REPLY
常用选项
Linux(持续更新)_第10张图片
read -p请输入数字 num
echo $num
Linux(持续更新)_第11张图片
输入多个参数,输入多个参数,参数间空格分隔
read key1 key2 key3
123 456 789
echo $key3
Linux(持续更新)_第12张图片
使用-s选项,屏幕数据内容不可见
read -p 请输入密码: -s passwd

管道

Linux系统的管道,可以将命令1的输出结果(数据),存储到管道中,然后让命令2从管道中读取数据,并对数据做进一步的处理。
管道符:|
wc命令可以统计行数,who命令查看当前扥估用户信息
who | wc -l
有些命令比较特殊,比如前面我们用到的passwd命令,它是用来修改系统的账户密码的,但是该命令默认只能从键盘读取密码,如果希望命令从管道中读取数据后作为密码则需要使用–stdin选项。
修改rongyin的密码
echo 123456 passwd -stdin yongyin

输入和输出的重定向

输出重定向

Linux系统中输出可以分为标准输出和标准错误输出。标准输出的文件描述符为1,标准错误输出的文件描述符为2。而标准输入的文件描述符则为0。
如果希望改变输出信息的方向,可以使用>或>>符号将输出信息重定向到文件中。使用1>或1>>可以将标准输出信息重定向到文件(1可以忽略不写,默认值就是1),也可以使用2>或2>>将错误的输出信息重定向到文件。这里使用>符号将输出信息重定向到文件,如果文件不存在,则系统会自动创建该文件,如果文件已经存在,则系统会将该文件的所有内容覆盖(原有数据会丢失!)。而使用>>符号将输出信息重定向到文件,如果文件不存在,则系统会自动创建该文件,如果文件已经存在,则系统会将输出的信息追加到该文件原有信息的末尾。
下方echo命令本身会在屏幕打印信息,重定向后屏幕不打印,将内容保存到file文件中;
echo "内容保存到fie文件中" > file
cat file
如果一条命令既有标准输出(正确输出),又有错误输出,可以>>追加写入到一个文件,写可以分别写入到不同文件;也可以使用使用&>符号可以同时将标准输出和错误输出都重定向到一个文件(覆盖),也可以使用&>>符号实现追加重定向。
ls filename 2>> error.txt
ls filename >> ok.txt
ls filename &>> file.txt
还可以使用2>&1将错误输出重定向到标准正确输出,也可以使用1>&2将标准正确输出重定向到错误输出。
Linux系统中有一个特殊的设备/dev/null,这是一个黑洞。无论往该文件中写入多少数据,都会被系统吞噬、丢弃。如果有些输出信息是我们不再需要的,则可以使用重定向将输出信息导入该设备文件中。

输入重定向

使用<<符号,<<符号(也被称为Here Document)代表你需要的内容在这里。
从file_txt读取数据,写到new_file.txt里面;
cat << file.txt >> new_file.txt


目录级文件指令

绝对路径与相对路径

绝对路径比如: /usr/bin/echo
相对路径,即当前工作路径,可以使用命令pwd查看

# 当前路径
pwd    
# 切换到当前路径下的python目录下,点.表示当前路径
cd ./python

在每个目录下,都会固定存在两个特殊目录,分别是一个点(.)和两个点(…)的目录。一个点(.)代表的是当前目录,两个点(…)代表的是当前目录的上层目录。在Linux下,所有以点开始的文件都是“隐藏文件”,对于这类文件,只使用命令ls-l是看不到的,必须要使用ls-la才可以看到
切换到家目录:cd ~后面加一撇~

Linux的目录结构

Linux里,一切皆文件,包括目录,根目录\;
所有目录和文件都在“根目录”下

目录 目录用途
/bin 常见的用户指令
/boot 内核和启动文件
/dev 设备文件,类似于windows的设备管理器,所有的硬件用文件的形式存储
/etc 系统和服务的配置文件,比如环境变量
/home 系统默认的普通用户的家目录,如果有创建新用户会在该目录下生成用户文件夹
/lib 系统函数库目录,动态链接共享库,类似于windows下的dll文件
lost+found ext3文件系统需要的目录,用于磁盘检查
/mnt 系统加载文件系统时常用的挂载点,可以将外部的存储挂载到/mnt上,d:/share
/opt 第三方软件安装目录
/proc 虚拟文件系统
/root root用户的家目录
/sbin 存放系统管理命令
/tmp 临时文件存放的目录
/usr 存放与用户直接相关的文件和目录,比如用户安装的程序
/media 系统用来挂在光驱等临时文件系统的挂载点,比如u盘,光驱
/proc 系统内存的映射,访问这个目录来获取系统信息【别动】
/var 目录文件不断扩充,习惯将被修改的目录放在这个目录下,包括各种日志文件

常用指令

显示目录下的内容:ls

ls [选项] [文件名或目录]

  • 命令名称:ls。
  • 英文原意:list。
  • 所在路径:/bin/ls。
  • 执行权限:所有用户。
  • 功能描述:显示目录下的内容。

选项介绍:

  1. -a:显示所有文件,包括隐藏文件
  2. –color=when:支持颜色输出,when的几个值:always:总显示颜色、never:从不、auto:自动
  3. -d:显示目录信息,而不是目录下的文件
  4. -h:人性化显示,按照我们习惯的单位显示文件大小
  5. -i:显示文件的i节点号
    每个文件都有一个被称作inode(i节点)的隐藏属性,可以看成系统搜索这个文件的ID,而“-i”选项就是用来查看文件的inode号的
  6. -l:长格式显示,一共7列(权限 引用计数 所有者 所属组 大小[字节] 文件修改时间 文件名)
    ls -lh文件的大小显示为k千字节

Linux中以“.”开头的文件是隐藏文件,只有通过-a才能查看;

切换目录:cd

cd[目录名]

  • 命令名称:cd。
  • 英文原意:change directory。
  • 所在路径:Shell内置命令。
  • 执行权限:所有用户。
  • 功能描述:切换所在目录。

两个选项:-P和-L的作用非常有限,很少使用。

  • -P (大写)是指如果切换的目录是软链接目录,则进入其原始的物理目录,而不是进入软链接目录;
  • -L(大写)是指如果切换的目录是软链接目录,则直接进入软链接目录。

cd /tmp:切换到临时目录
cd ..:两个点,切换到上级目录
cd ~:切换到家目录
cd ./bin:点代表当前目录:当前目录下的bin目录
cd -:减号,切换到上次所在目录

创建目录:mkdir

mkdir [选项] 目录名
创建一个空目录;

  • 命令名称:mkdir。
  • 英文原意:make directories。
  • 所在路径:/bin/mkdir。
  • 执行权限:所有用户。
  • 功能描述:创建空目录。

建立递归目录可以使用-p选项,比如:mkdir /tmp/python

删除目录:rmdir

rmdir [选项] 目录名
-p参数递归删除目录

  • 命令名称:rmdir。
  • 英文原意:remove empty directories。
  • 所在路径:/bin/rmdir。
  • 执行权限:所有用户。
  • 功能描述:删除空目录

rmdir命令只能删除空目录,目录下有内容会报错;一般使用rm命令取代;

树形结构显示目录文件:tree

tree 目录

  • 命令名称:tree。
  • 英文原意:list contents of directories ina tree-like format。
  • 所在路径:/usr/bin/tree。
  • 执行权限:所有用户。
  • 功能描述:显示目录树

tree /usr

文件操作命令

创建文件:touch

touch [选项] 文件或目录名

  • 命令名称:touch。
  • 英文原意:change file timestamps。
  • 所在路径:/bin/touch。
  • 执行权限:所有用户。
  • 功能描述:修改文件的时间戳。

一些选项:

  • -a:只修改文件的访问时间
  • -c:如果文件存在,不建立新文件
  • -d:把文件的时间改为指定的时间
  • -m:只修改文件的数据修改时间

文件的时间属性可以通过stat 文件命令(display file or file systemstatus)查看

touch new_file

查看文件:cat

cat [选项] 文件名

  • 命令名称:cat。
  • 英文原意:concatenate files and print onthe standard output。
  • 所在路径:/bin/cat。
  • 执行权限:所有用户。
  • 功能描述:合并文件并打印输出到标准输出。

选项:

  • -A:相当于-vET选项的整合,用于列出所有隐藏符号
  • -E:列出每行结尾的回车符$
  • -n:显示行号
  • -T:把Tab键用^I显示出来
  • -v:列出特殊字符
分屏显示文件:more

more 文件名

  • 命令名称:more。
  • 英文原意:file perusal filter for crtviewin。
  • 所在路径:/bin/more。
  • 执行权限:所有用户。
  • 功能描述:分屏显示文件内容

常用的交互命令如下。

  • 空格键:向下翻页。-
  • b:向上翻页。
  • 回车键:向下滚动一行。
  • /字符串:搜索指定的字符串。
  • q:退出。
分行显示:less

和more类似,less 文件名

  • 命令名称:less。
  • 英文原意:opposite of more。
  • 所在路径:/usr/bin/less。
  • 执行权限:所有用户。
  • 功能描述:分行显示文件内容。

less命令可以使用上、下箭头,用于分行查看文件内容。

显示文件头n行:head

head [选项] 文件名
选项:

  • -n:行数,从文件头开始
  • -v:显示文件名

默认显示10行

显示指定行数(5)也可以直接写-行数,比如head -5 file.txt

显示文件末尾行数:tail

同head类似,显示末尾行数;tail [选项] 文件名

选项:

  • -n:显示行数,默认10行
  • -f:监听文件的新增内容(开启另一个终端写入)
建立文件链接:ln

ln [选项] 源文件 目标文件
选项:

  • -s:建立软链接文件,如果不加-s选项,建立硬链接文件;
  • -f:强制,如果目标文件已经存在,删除目标文件再建立链接文件;

软链接的特点同windows中的快捷方式一致;不同的inode号;硬链接是相同的inode号;

目录和文件都能操作的命令

删除目录|文件:rm

rm [选项] 文件或目录

  • 命令名称:rm。
  • 英文原意:remove files or directories。
  • 所在路径:/bin/rm。
  • 执行权限:所有用户。
  • 功能描述:删除文件或目录。
    选项:
  • -f:强制删除(force)
  • -I:交互删除,在删除之前会询问用户
  • -r:递归删除,可以删除目录,不带强制选项,每一级都会循环用户;

一般强制和递归选项使用:rm -rf /test/,删除文件也不会报错;

复制:cp

改变文件权限:chmod

字母代表权限:r:读;w:写;x:执行
Linux(持续更新)_第13张图片
Linux下的每个文件都定义了文件拥有者(user)、拥有组(group)、其他人(others)的权限,字母u、g、o来分别代表拥有者、拥有组、其他人。
增加权限使用+号,删除权限使用-号,详细权限使用=号
比如:chmod u+x test.txt表示给文件test.txt文件拥有者赋予执行权限。
同时设置所有人的权限可以使用数字表示法,r=4,w=2,x=1,如果权限是rwx,则数字表示为7,如果权限是r-x,则数字表示为5。假设想设置一个文件的权限是:拥有者的权限是读、写、执行(rwx),拥有组的权限是读、执行(r-x),其他人的权限是只读(r–),使用命令chmod 754 somefile来设置
如果需要修改的权限是目录及该目录下所有子目录及文件,使用使用-R参数,比如:chmod-R 754 filedir

改变文件拥有者:chown

chown username test.txt将test.txt文件拥有者改为username
chown :usergroup test.txt将test.txt文件拥有组改为usergroup(组名前面有个冒号)
如果是修改目录拥有者,同样是添加-R参数

改变文件拥有组:chgrp

chgrp usergroup test.txt
如果是修改目录拥有组,同样是添加-R参数


字符处理

管道符

用竖杠|表示,表示将返回传给下一个命令
比如查找当前目录下的包含python的文件:ls | grep python

grep搜索

grep [-ivnc] '需要匹配的字符' 文件名
查找包含改指定字符的行内容
选项说明:
-i:不区分大小写
-c:统计包含匹配的行数
-n:输出行号
-v:反向匹配
grep-ic 'content' test.txt
cat test.txt | grep-ic 'content'也可以使用管道符

使用sort排序

sort [-ntkr] 文件名
默认按每行的第一个字符排序
选项说明:
-n:采取数字排序
-t:执行分隔符
-k:指定第几列
-r:反向排序
cat sort.txt | sort-t ":"-k 2-n
按制表符分隔,取第二列按数字排序(按字符排序,11会小于3)
Linux(持续更新)_第14张图片

使用uniq去重

uniq一般都需要和sort命令一起使用,也就是先将文件使用sort进行排序(这样重复的内容就能显示在连续的几行中),然后再使用uniq删除掉重复的内容(uniq的作用就在于删除连续的完全一致的行)。
删除重复行,计算相同行出现次数
uniq [-ic]
选项说名字:
-i:忽略大小写
-c:计算重复行数

cat uniq.txt | sort | uniq -c先排序,再去重,uniq只能对连续行去重
Linux(持续更新)_第15张图片

cut截取文本

cut就是截取的意思,它能处理的对象是“一行”文本,可从中选取出用户所需要的部分。在有特定的分隔符时,可以指定分隔符,然后打印出以分隔符隔开的具体某一列或某几列。
cut-f 指定的列-d'分隔符'
按冒号分隔,打印1,6,7散列:
cat /etc/passwd | cut-f1,6-7-d':'

没有分隔符,打印指定字符
cut-c指定列的字符
比如打印出每行第1~5个字符,以及第7~10个字符的内容:cat /etc/passwd | cut-c1-5,7-0

tr文本转化

tr命令主要用于文本转换或删除
cat /etc/passwd | tr '[a-z]' '[A-Z]'将小写字母替换为大写字母

删除冒号:cat /etc/passwd | tr-d ':'

paste文件合并

paste的作用在于将文件按照行进行合并,中间使用tab隔开。
paste a.txt b.txt
Linux(持续更新)_第16张图片

split文件分割

split文件的分割,支持按照行数分割和按照大小分割这两种模式。二进制文件因为没有“行”的概念,只能按照文件大小进行分割。

按行号分割:split-l 1000 big_file.txt small_file_
-l参数指定每1000行为一个小文件,最后一个参数是分割后小文件命名前缀

二进制文件,按大小分割:·split-b 128m big_bin small_bin_·
-b参数指定每128m为一个小文件

账号管理

linux三种用户

Linux系统中的用户分为3类,普通用户、根用户、系统用户。每个用户归属于一个用户组GID;
Linux系统采用一个32位的整数记录和区分不同的用户User ID;

  • 普通用户是指所有使用Linux系统的真实用户,这类用户可以使用用户名及密码登录系统。用户的UID大于500,因为在添加普通用户时,系统默认用户ID从500开始编号。
  • 根用户
    root用户,它的ID是0,也被称为超级用户,root账户拥有对系统的完全控制权:可以修改、删除任何文件,运行任何命令;
  • 系统用户
    系统运行时必须有的用户,但并不是指真实的使用者。比如在RedHat或CentOS下运行网站服务时,需要使用系统用户apache来运行httpd进程,而运行MySQL数据库服务时,需要使用系统用户mysql来运行mysqld进程;

登录或注销

su - username使用su指令切换用户,然后输入username的密码
sudo su - username使用sudo指令,输入当前用户密码,切换至username用户
从root切换到其他用户,不需要输入密码;
loginout注销,在图形运行级别无效,运行级别3下有效;
linux记录密码信息的文件:/etc/passwd
Linux(持续更新)_第17张图片
etc/passwd内容格式说明
每行都是使用6个分隔号“:”隔开的7列字符串
Linux(持续更新)_第18张图片
密码相关的信息保存到/etc/shadow中,默认只有root用户才有读的权限;
Linux(持续更新)_第19张图片

su命令默认表示切换到root用户,之后输入root密码切换身份为root,完成操作后,使用exit命令可以退出root切换到原先的用户;
su命令后面还可以加上一个“-”参数su-,加上这个参数,切换成root用户时,身份变成root,还能应用root的用户环境。可以通过pwd命令查看当前用户环境(返回用户家目录);
“用户环境”就是/etc/passwd中定义的用户家目录、使用的Shell,以及关于这个用户的个性化设置等;

用户操作

新增用户:useradd

  1. 系统将用户信息记录在/etc/passwd中,一般会在/etc/passwd和/etc/shadow末尾追加一条记录,同时会分配给该用户一个UID。
    也可以通过-u参数,指定用户UIDuseradd-u 556 user01
  2. 为该用户自动创建家目录。家目录以创建的用户名为目录名,创建的路径在/home目录中;
    使用-d指定家目录:useradd-d /home/myuser/user01
  3. 复制/etc/skel下所有的文件至/home/user02
  4. 新建一个与该用户名一样的用户组
    可以使用-g参数为新建用户user01指定用户组user0:useradd-g user0 user01

其他参数,可以使用man命令查看:man useradd

修改密码:passwd

创建用户后,用户实际上还没有登录系统的权限,在不设置密码的情况下,在/etc/shadow中该用户记录中以冒号分隔的第二列将显示为两个感叹号“!!”,可以使用passwd命令修改密码,输入命令回车,输入两边密码即可;
passwd user01
普通用户也可以使用passwd修改密码,需要提供当前密码;后面不需要跟参数,直接:passwd

修改用户:usermod

usermod命令执行实际是对/etc/passwd和/etc/shadow配置文件做了修改;

  • 修改家目录:
    usermod-d /home/user01_new-m user01
    -m参数的作用:如果指定用户的家目录存在,就自动创建新目录/home/user01_new,并使用该目录作为alice的新家目录。如果没有这个参数,系统会报一个错误;
  • 账号冻结
    可以使用-L参数实现账号冻结
    usermod-L user01

更多的参数,可以使用man usermod查看

删除用户:userdel

userdel user01
使用这个命令会将删除user01在/etc/passwd和/etc/shadow中的记录。出于数据安全方面考虑,默认情况下,删除用户时不会删除原来用户的家目录和邮件信息。可以使用-r参数同时删除用户家目录和该用户的邮件;

新增用户组:groupadd

/etc/group的最后一行:用户组的id
groupadd group1
/etc/group文件,每一行代表一个用户组;格式是使用3个分隔号“:”隔开的4列。第一列是用户组名,第二列代表密码(但是并不使用),第三列代表用户组的数字ID,第四列是组成员,这里为空说明还没有任何用户属于这个组。

删除用户组:groupdel

命令+要删除的用户组,如果已有用户属于这个试图删除的组,该操作会失败。
groupdel group1

检查用户信息

查看用户:userswhow

  • users:可以查看当前系统有哪些用户

  • who:返回有三列,第一列是登录用户的用户名,第二列是用户登录的终端,第三列是用户登录的时间。如果是通过远程网络登录,则同时会显示远程主机的主机名或IP地址
    who

  • w:更为详细的信息;第一行会显示当前时间、系统运行时间、已登录的用户数量和系统负载。下面显示的信息分为8列,每一列解释如下。第一列:登录用户的用户名。第二列:用户登录终端。第三列:如果用户从网络登录,则显示远程主机的主机名或IP地址。第四列:用户登录时间。第五列:用户闲置时间。第六列:与终端相关的当前所有运行进程消耗的CPU时间总量。第七列:当前WHAT列所对应的进程所消耗的CPU时间总量。第八列:用户当前运行的进程。

finger命令在不加任何参数的情况下,同样会显示系统的登录用户;如果在finger后跟上某个用户名,则显示该用户更详细的信息;

账号添加sudo权限

普通账号有时可能没有sudo权限
sudo命令相当于普通用户使用root身份执行,运行该命令时,系统首先检查/etc/sudoers,判断该用户是否有执行sudo的权限,在确定有执行权限后,系统要求用户输自己的密码
没有sudu权限
vim /etc/sudoers编辑该配置文件,为普通账号添加sudo权限;
添加下方红色框这一条权限添加语句,给账户yinrong添加sudo权限;
Linux(持续更新)_第20张图片
添加的yinrong ALL=(ALL) ALL这一行代表的意思是,yinrong这个用户(第一列)可以从任何地方登录后(第二列的ALL)执行任何人(第三列的ALL)的任何命令(第四列的ALL)。还可以定义某一个组的sudo权限,比如%yinrong ALL=(ALL)ALL可以让所有属于yinrong用户组的用户从任何地方登录后执行任何人的任何命令。


任务例行化运行

周期性执行使用命令为cron;单词运行命令为at

单次运行任务:at

[yinrong@localhost ~]$ at now + 30 minutes
warning: commands will be executed using /bin/sh
at> /sbin/shutdown-h now
at> 
job 1 at Fri Mar  4 23:25:00 2022
[yinrong@localhost ~]$ atq
1	Fri Mar  4 23:25:00 2022 a yinrong
[yinrong@localhost ~]$ atrm 1
[yinrong@localhost ~]$ at 00:00 2022-3-6
warning: commands will be executed using /bin/sh
at> /sbin/shutdown-h now
at> 
job 2 at Sun Mar  6 00:00:00 2022
[yinrong@localhost ~]$ atq
2	Sun Mar  6 00:00:00 2022 a yinrong

30分钟后at now + 30 minutes关机/sbin/shutdown-h now
后面的是使用了ctrl+d快捷键:结束符
可以使用atq命令查看调度任务列表,第一列是任务编号
可以使用atrm 1,artm+任务编号,删除该编号调度任务
可以指定具体时间调度,比如at 00:00 2022-3-6
默认情况下,所有用户都可以使用at命令来调度自己的任务,如果由于特殊的原因需要禁止某些用户使用这个功能,可以将该用户的用户名添加至/etc/at.deny中

周期执行任务:cron

任务例行化,在Linux中,可以利用cron工具做这种设置。首先需要确定crond进程在运行,如果没有运行,需要先启动该进程。
启动进程:service crond start
查看进程启动状态:service crond status
使用crontab -e编辑计划文件
查看设置的任务:crontab-l
删除所有任务:crontab-r
每次保存crontab后,重启应用这个计划任务sudo service cron restart
cron在线表达式生成:https://cron.qqe2.com/

  • 编辑计划文件相关命令
crontab -u root -e     #编辑用户 root 的计划任务文件
crontab -e            #编辑当前用户的计划任务文件
crontab -u root -l     #显示用户 root 的计划任务文件
crontab -l            #显示当前用户的计划任务文件
crontab -r            #删除当前用户的计划任务文件

crontab在运行,环境和用户环境不同,可能有的命令找不到,可以在脚本中添加路径,比如PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin

cron表达式

  • m: 表示分钟
  • h: 表示小时
  • dom: 表示日期
  • mon: 表示月份
  • dow: 表示星期
  • command: 预执行的命令

另外需要使用一些特殊符号实现灵活的配置:
* 代表所有值
/ 代表每
- 代表范围
, 分割数字

*/2 * * * * ls 每隔2分钟执行一次 ls 命令
30 7 3-6 * * ls 每个月的3,4,5,6号的7:30分各执行一次 ls 命令

注意事项
有的cron表达式可能是7位,分别为:秒,分钟,小时,日,月,星期,年


其他

命令换行

/+回车
比如这里切换到用户目录下面

cd /Users/\
yr007

Linux(持续更新)_第21张图片

Mac里添加环境变量

修改用户配置文件.bash_profile,保存后resource命令刷新
vim ~/.bash_profile
resource ~/.bash_profile


参考:《Linux系统命令级Shell脚本实践指南》

你可能感兴趣的:(Linux,linux)