关于Linux基础

用户管理

图片

useradd 用户名 创建一个新用户

passwd 用户名 为用户指定一个密码

当创建用户成功后,会自动创建和用户名同名的家目录 /home/用户名

也可以通过 useradd -d 指定目录 用户名 给创建的新用户指定家目录

passwd 如果没带用户名,会给当前登录的用户修改密码

userdel 用户名 删除指定用户,但是会保留家目录

userdel -r 用户名 删除用户且删除用户家目录

id 用户名 查询用户信息

图片

su - 用户名 切换到用户

exit 返回到原来的用户

su - 不带用户名默认切换到 root 用户

组管理

groupadd 组名 新增一个组

useradd -g 用户组 用户名 创建用户时指定加入组

groupdel 组名 删除指定组

删除的前提是这个组没有用户了,才能删除

usermod -g 新组 用户名 修改用户所在组

用户和组的相关文件

/etx/passwd 文件

用户的配置文件,记录用户的各种信息

图片

每行的含义: 用户名:口令:用户标识号:组标识号:注释行描述:主目录:登录 Shell

/etc/shadow 文件

口令的配置文件

图片

每行的含义:登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:保留

etc/group 文件

组的配置文件,记录了系统包含的组的信息

图片

每行的含义:组名:口令:组标识号:组内用户列表

运行级别

  • 0 关机
  • 1 单用户【此模式可以帮助找 root 密码】
  • 2 多用户无网络
  • 3 多用户有网络
  • 4 系统未使用
  • 5 图形界面
  • 6 系统重启

常用运行级别是 35 ,要修改默认运行级别可修改文件

修改 /etc/inittab 文件的 id:x:initdefault 这行中的 x 指定为数字

图片

命令 init [0123456] 修改运行级别

找回 root 密码

开机时按 enter -> 输入 e

图片

光标移动到 kernal 项 -> 输入 e

图片

在该行的最后追加 1 ,即 进入单用户模式【临时生效】

图片

回车,然后输入 b 【boot】启动到单用户模式

图片

启动成功后可以直接修改用户密码

图片

帮助命令

man 命令或配置文件 获得帮助信息

help 获得 shell 内置命令的帮助信息

文件目录相关

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

ls [选项] [目录或文件] 查看当前目录内容

选项:

  • -a 显示当前目录的所有文件和目录,包括隐藏文件
  • -l 以列表的方式显示
  • -h 显示文件大小时,以 K,M,G 单位

mkdir -p 多级目录 创建多级目录

rmdir 空目录 删除指定空目录

若要删除非空目录,使用 rm -rf 目录

-r 表示递归删除目录下的文件和目录

-f 表示强制删除

cp -r 源 目标 递归复制整个目录到目标地址

cp 强制覆盖不提示

cat [选项] 文件 查看文件内容

选项:

  • -n 显示行号(翻页 enter 退出 q

more 文件 基于 VI 编辑器的文本过滤器,以全屏幕的方式按页显示文本内容

快捷键:

  • 空白键 向下翻一页
  • enter 向下翻一行
  • q 离开
  • Ctrl + F 向下滚动一屏
  • Ctrl + B 向上滚动一屏
  • = 输出当前行号
  • :f 输出文件名和当前行号

less 文件 分屏查看文件内容,在显示文件时,并不是一次将整个文件加载后显示,而是根据显示需要加载内容,通常用来显示内容多的文件

快捷键:

  • 空白键 向下翻一页
  • [pagedown] 向下翻一行
  • [pageup] 向上翻一行
  • /字符串 向下搜寻【字符串】,n 向下查找,N 向上查找
  • ?字符串 向下搜寻【字符串】,n 向上查找,N 向下查找
  • q 离开

echo [选项] [输出内容] 输出内容到控制台

可以输出环境变量:echo $变量名

echo env 输出系统所以环境变量

head -n [数量] 文件 查看文件前 n 行内容,默认 10 行

tail -n [数量] 文件 查看文件后 n 行内容,默认 10 行

也可以使用 tail -f 文件 实时追踪该文件的更新

>>>

> 输出重定向

>> 追加

echo "内容" > 文件 将 "内容" 写入文件(覆盖)
echo "内容" >> 文件 将 "内容" 写入文件末尾(追加)

ln 指令(link)

软链接(符号链接),主要存放链接其他文件的路径

ln -s [源文件或目录] [软链接名] 给源文件或目录创建一个软链接

rm -rf 软链接名 删除软链接

history 查看已经执行过的历史命令,也可以执行历史指令

history n 查看最近使用过的 n 条指令

history !n 执行历史编号为 n 的指令

日期时间

date 显示当前时间

date +%Y-%m-%d %H:%M:%S 显示当前 年月日分秒时

date -s 字符串时间 设置当前系统时间

cal [选项] 默认显示本月日历

cal 2020 显示 2020 年日历

搜索查找

find [搜索范围] [选项] 从指定目录向下递归地遍历子目录,将满足条件的文件或目录显示在终端

选项:

  • -name<查询方式> 按指定文件名查找文件,可以使用通配符 *?
  • user<用户名> 查找属于指定用户的文件
  • size<文件大小 按指定文件大小查找文件
    • + 大于
    • - 小于

locate 搜索文件 利用事先建立的系统文件名称及路径的 locate 数据库实现快速定位文件,无需遍历整个文件系统

第一次运行期,须使用 updatedb 创建 locate 数据库

| 管道符,将前一个命令的处理结果输出传递给后面的命令处理

grep [选项] 查找文件 源文件 过滤查找

选项:

  • -n 显示匹配行和行号
  • -i 忽略字母大小写

压缩解压

gzip/gunzip 压缩、解压 *.gz 文件

zip/unzip 压缩、解压 *.zip 文件

选项:

  • zip -r 目录 递归压缩,即压缩指定目录
  • unzip -d <目录> *.zip 将文件解压至指定目录

tar [选项] *.tar.gz 打包指令

选项:

  • -c 产生 *.tar 打包文件
  • -v 显示详细信息
  • -f 指定压缩文件名
  • -z 打包同时压缩
  • -x 解包 *.tar 文件

打包 tar -zcvf *.tar.gz 文件1 文件2 ... 文件n 将文件打包并压缩

解包 tar -zxvf *.tar.gz -C 目标路径*.tar.gz 文件解包至指定路径

组管理和权限管理

图片

文件、目录的所有者

一般为文件的创建者

图片

chown 用户名 文件名 修改文件的所有者,使用 -R 对下所有子文件或目录递归生效

chgrp 组名 文件名 修改文件所在组

usermod -g 组名 用户名 改变用户所在组

usermod -d 目录 用户名 改变用户登录的初始目录

图片

图片

图片

图片

定时任务调度

任务调度:是指系统在某个时间执行的特定的命令或程序。

任务调度分类:

  • 系统工作:有些重要的工作必须周而复始地执行,如病毒扫描
  • 个别用户工作:个别用户可能希望执行某些程序,如对mysql数据库的备份

crontab [选项] 进行定时任务的设置

常用选项:

  • -e 编辑 crontab 定时任务
  • -l 查询 crontab 任务
  • -r 删除当前用户的所有 crontab 任务

快速入门

  1. 设置任务调度文件 /etc/crontab
  2. 设置个人任务调度,执行 crontab -e
  3. 输入任务到调度文件 */1****ls -l /etc/ > /tmp/to.txt

每小时的每分钟执行 ls -l /etc/ > /tmp/to.txt 命令

参数

图片

图片

图片

分区、挂载

Linux采用了一种叫载入(mount)的处理方法,它的整个文件系统中包含了-整套的文件和目录,且将一个分区和一个目录联系起来。这时要载入的一个分区将使它的存储空间在一个目录下获得

图片

对于IDE硬盘,驱动器标识符为hdx~,其中“hd”表明分区所在设备的类型,这里是指IDE硬盘了。“x”为盘号(a为基本盘,b为基本从属盘,c为辅助主盘,d为辅助从属盘),~代表分区,前四个分区用数字1到4表示,它们是主分区或扩展分区,从5开始就是逻辑分区。例,hda3 表示为第一个IDE硬盘上的第三个主分区或扩展分区,hdb2表示为第二个IDE硬盘上的第二个主分区或扩展分

对于SCSI硬盘则标识为sdx~ ,SCSI 硬盘是用“sd”来表示分区所在设备的类型的,其余则和IDE硬盘的表示方法一样。sdbl [表示第2块scsi硬盘的第1个分区]

lsblklsblk -f 查看所有设备挂载情况

挂载步骤

增加1块硬盘,重启系统

图片

给 sdb 硬盘分区

fdisk /dev/sdb 开始分区

  • m 显示命令列表
  • p 显示磁盘分区,同 fdisk -l
  • n 新增分区
  • d 删除分区
  • w 写入并退出

输入 n 新增一个分区,然后选择分区类型为主分区,设定分区号和分区的开始和结束扇区

图片

图片

使用 mkfs -t ext4 /dev/sdb1 将创建的分区格式化为 ext4

图片

创建一个文件夹 mkdir /home/newdisk

使用 mount /dev/sdb1 /home/newdisk 将创建的目录挂载到 sdv1 分区上

图片

使用 mount 命令挂载的分区只是临时的,当系统重启后就需要重新挂载

配置 Linux 的分区表 /etc/fstab ,实现系统启动时,自动挂载

图片

使用这种方式,重启后挂载依旧存在

如果希望卸载挂载,使用 umount 设备名 | 挂在路径

磁盘情况查询

使用 df -h 查询系统磁盘整体使用情况

使用 du [选项] 目录 查询指定目录的磁盘占用情况

选项:

  • -s 指定目录占用大小汇总
  • -h 人类可读的单位
  • -a 含文件
  • --max-depth=1 子目录深度
  • -c 列出明细的同时,增加汇总值

图片

常用磁盘指令

ls -l /home | grep "^-" | wc -l 统计 /home 文件夹下文件的个数

ls -l /home | grep "^d" | wc -l 统计 /home 文件夹下目录的个数

ls -lR /home | grep "^-" | wc -l 统计 /home 文件夹下文件的个数(包括子目录)

ls -lR /home | grep "^d" | wc -l 统计 /home 文件夹下目录的个数(包括子目录)

网络配置

配置固定的 ip 地址,配置文件 /etc/sysconfig/network-scripts/ifcfg-eth0

图片

修改完配置文件,重启系统并使用 service network restart 重启网络服务

使用 hostname 查看当前主机名

Linux 的主机映射文件 /etc/sysconfig/network

图片

在配置文件 /etc/hosts 增加 ip地址和主机的映射

图片

重启设备生效

进程管理

在LINUX中,每个执行的程序(代码)都称为一个进程,每一个进程都分配一个ID号

每一个进程,都会对应一个父进程,而这个父进程可以复制多个子进程

每个进程都可能以两种方式存在的。前台与后台,所谓前台进程就是用户目前的屏幕上可以进行操作的;后台进程则是实际在操作,但由于屏幕上无法看到的进程,通常使用后台方式执行[sshd,crond]

一般系统的服务都是以后台进程的方式存在,而且都会常驻在系统中,直到关机才才结束

使用 ps aux 显示所有进程

图片

使用 ps aux | grep sshd 可以查看 sshd 进程

ps 详解

System V 展示风格

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

使用 kill [选项] 进程号 通过进程号杀死进程,使用 -9 强制终止

使用 killall 进程名称 通过进程名杀死进程,支持通配符

也可以通过 pstree [选项] 更直观的查看进程信息

图片

选项:

  • -p 显示进程 PID
  • -u 显示进程所属用户

服务管理

服务(service)本质就是进程,但是是运行在后台的,通常都会监听某个端口,等待其它程序的请求,比如(mysql,sshd防火墙 等),因此我们又称为守护进程

服务的管理指令 service 服务名 [start|stop|restart|reload|status]

在 CentOS7 之后,不再使用 service 而是 systemctl

使用 service 对某个服务启用或关闭是临时生效的,如果需要永久生效,需要使用 chkconfig 给每个服务的运行级别设置自启动、关闭

使用 chkconfig --list | grep xxx 可以查看 xxx 服务的情况

图片

使用 chkconfig --level n 服务名 on/off 将指定的服务的第 n 运行级别开启或关闭

使用 chkconfig 服务名 off 不管那种运行级别都关闭

动态监控进程

topps 命令很相似,它们都用来显示正在执行的进程,topps 最大的不同之处,在于 top 在执行一段时间可以更新正在运行的的进程(默认每3秒变化一次)

选项:

  • -d 秒数 指定几秒更新,默认 3 秒
  • -i 不显示闲置或者僵尸进程
  • -p 指定监控进程 ID

图片

交互操作:

  • P 以 CPU 使用率排序,默认
  • M 以内存使用率排序
  • N 以进程 PID 排序
  • q 退出

输入 u 回车,再输入用户名,即可监视特定用户

输入 k 然后输入要结束的进程 ID 号即可终止指定进程

监控网路状态

使用 netstat [选项] 查看系统网络情况

选项:

  • -an 按一定顺序排序输出
  • -p 显示哪个进程在调用

使用 netstat -anp | grep sshd 查看 sshd 服务的信息

使用 netstat -tlnp 查看当前系统有哪些端口正在监听

图片

RPM 和 YUM 软件安装

RPM 包管理

一种用于互联网下载包的打包及安装工具,它包含在某些 Linux 分发版中。它生成具有 .RPM 扩展名的文件。RPM 是 RedHat Package Manager (RedHat软件包管理工具)的缩写,类似 Windows 的 setup.exe ,这一文件格式名称虽然打上了 RedHat 的标志,但理念是通用的。Linux的分发版本都有采用(suse,redhat, centos等等),可以算是公认的行业标准了

常用指令

  • rpm -ql 软件包名:查询软件包中的文件
  • rpm -qa:查询所安装的所有 rpm 软件包
  • rpm- qf 文件全路径名:查询文件所属的软件包
  • rpm -q 软件包名:查询软件包是否安装
  • rpm -qi 软件包名:查询软件包信息

使用 rpm -e 包名 卸载 RPM 包

如果其他软件包依赖于要卸载的包,会产生错误信息

使用 rpm -e --nodeps 包名 强制卸载,依赖于此包的也无法运行

使用 rpm -ivh 包文件 安装 RPM 包

-i 表示 install、-v 表示 verbose、-h 表示 hash(进度条)

YUM

Yum 是一个 Shell 软件包管理器。基于 RPM 包管理,能够从指定的服务器自动下载 RPM 包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包

使用 yum list | grep xx 查询 YUM 服务器是否有需要安装的软件包

使用 yum install xxx 下载安装需要的软件包

不一定每天 code well 但要每天 live well
原文地址:https://www.cnblogs.com/geekfx/p/13698779.html