Linux Shell(常用命令整理)

admin 2023-10-10 537 阅读 0评论

Linux

Linux版本介绍

内核版本分为三个部分,主版本号、次版本号、末版本号,次版本号是奇数为开发板,偶数为稳定版。

「发行版本」

  • RedHat:经过专业测试
  • Fedora:社区发行,版本较新,但是没有经过专业测试。(也是redhat发行)
  • CentOS:用RedHat的源代码编译,但是把RedHat的商标等去掉。但是没有一些技术支持。
  • 桌面安装:Debian,Ubuntu等。

常见目录

/ 根目录
/root  root用户目录
/home/username  普通用户目录
/etc  配置文件目录
/bin  命令目录
/sbin  管理命令目录
/usr/bin | /usr/sbin  系统预装的其他命令

系统命令

帮助命令

man 是 manual 的缩写
man 帮助用法演示
    #man ls
man 也是一条命令,分为9章,可以使用man命令获得man的帮助
    #man 7 man

help
shell(命令解释器)自带的命令成为内部命令,其他的是外部命令
内部命令使用 help 帮助
    #help cd
外部命令使用help帮助
    #ls --help

可以通过type来判断一个命令是内部还是外部命令
    #type ls
    #type cd

文件管理

  • 显示当前的目录
pwd 显示当前的目录名称
  • 文件查看
ls 查看当前目录下的文件
ls /  /root    这样会同时查看根目录和 /root目录下的文件
常用参数
    -l 长格式显示文件
    -a 显示隐藏文件
    -r 逆序显示(默认按照文件名排序)
    -t 按照时间顺序显示   ls -l -r -t (会按照时间逆向排序) ls -lrt
    -R 递归显示    -h 人性化显示、    -d 只显示目录
  • 更改当前的操作目录
cd 更改当前的操作目录

cd /path/to/... 绝对路径
cd ./path/to/... 相对路径
cd ../path/to/... 相对路径
  • 目录文件的创建与删除
mkdir  建立空目录
mkdir a

常用参数
    -p  递归创建多级文件夹

rmdir 删除空文件夹
rmdir a

rm 可以删除非空目录及文件

常用参数
    -r 删除目录
    -f 强制删除,不提示
    需要注意,rm -rf 后面可以跟多个目录
    不要出现 rm -rf / usr 这种,会从根目录开始删除
  • 复制和移动目录
cp 复制文件和目录
cp /root/a /tmp

常用参数
    -r/R 递归复制目录
    -v 显示过程
    -p 保留文件原有更新时间(属性)
    -a 时间戳+所有权+复制连接文件属性而非档案本身    -f 强行覆盖    -i 覆盖之前先行提示

mv 移动文件或者重命名
mv /a /other
mv /a /tmp
mv /a /tmp/b(移动+重命名)

常用参数
    -i 覆盖文件前提示

通配符

常用通配符

* 匹配任何字符串
? 匹配1个字符串
[xyz] 匹配xyz任意一个字符
[a-z] 匹配一个范围
[!xyz]或者[^xyz] 不匹配

文本内容查看

cat 文本内容显示到终端
    显示全部
head 查看文件开头
    head test.txt  默认查看前10行
    head -5 test.txt 
    head -c 20 runoob_notes.log  显示文件前 20 个字节

tail 查看文件结尾
    tail -1000f catalina.out
    常用参数 
    -f 文件内容更新后,显示信息同步更新

wc 统计文件内容信息    
    wc -l /tmp/test.txt    查看文件有多少行
    -c或--bytes或——chars:只显示Bytes数;
    -l或——lines:只显示列数;
    -w或——words:只显示字数。

more 分行显示 
less

打包和压缩

最早的Linux备份介质是磁带,使用的命令是tar。可以打包后的磁带文件进行压缩储存,压缩的命令是 gzip 和 bzip2,经常使用的扩展名是 .tar.gz  .tar.bz2  .tgz。

tar 打包命令
常用参数
    c 打包
    x 解包
    f 指定操作类型为文件       v 显示进度    P 使用绝对路径
打包
tar cf /tmp/etc-backup.tar /etc      把  /etc 这个文件夹打包放在/tmp/etc-backup.tar会提示,但是也能成功:tar: Removing leading `/' from member names

tar cPf /tmp/etc-backup.tar /etc      使用绝对路径 (没有提示)
tar czf /tmp/etc-backup.tar.gz /etc  (tar集成了gzip和bzip2)
tar cjf /tmp/etc-backup.tar.bz2 /etc  (压缩比例更高)

解包
tar xf /tmp/etc-backup.tar -C /root  把 tar包解压到 /root 目录下
tar zxf /tmp/etc-backup.tar.gz -C /etc
tar zjf /tmp/etc-backup.tar.gz -C /etc

vi

四种模式:
    正常模式(Normal-mode)
    插入模式(Insert-mode)
    命令模式(Command-mode)
    可视模式(Visual-mode)

i 进入插入模式
i是当前光标
I是光标当行开头
a是光标后一位
A是光标当行结尾
o下一行,会产生一个空行
O上一行,会产生一个空行

v进入可视模式

:进入命令模式

esc返回正常模式

正常模式下:
hjkl可以控制上下左右

yy表示复制当行,p可以粘贴
3yy表示复制三行
y$ 表示复制从光标到当行结尾
dd d$表示剪切

操作错误,u可以撤销,ctrl+r重做
x表示删除当前光标的字符
r可以替换当前字符

:set nu 可以查看目前是第几行
数字 + G可以到数字对应的行
g移动到第一行
G移动到最后一行


^来到光标所在行的开头,$来到光标所在行的结尾


 命令模式
:w /root/test.txt   文件新建的,可以保存一个新文件
:w 文件已经存在的情况下,保存
:wq 保存退出
:q! 强制退出

:! 执行linux命令,看完后回车重新回到vim
/x  查找x字符,n查找下一个,shift+n上一个
:s/old/new 用新字符替换旧字符(只正对光标所在的行)
:%s/old/new 用新字符替换旧字符(整个文本,但只替换一个)
:%s/old/new/g 用新字符替换旧字符(整个文本,全部替换)
:3,5s/x/X/g 3-5行内全部替换,替换一个就去掉g

:set nu 显示行号
:set nonu 不显示行号

以上是单次修改的,如果要修改默认配置
vim /etc/vimrc


可视模式
三种进入可视模式的方式
v 字符可视模式
V 行可视模式
ctrl + v 块可视模式
    配合d和I(大写i)命令可以进行块的便利操作

需要在块的所有行之前加入一些字符,选中块,I的时候会在选中的块的第一行的第一个光标处,输入字符,连续两次esc。
选中块,d,然后选中的块就会被删除

用户与权限管理

useradd 新建用户
    useradd user1 (可以用 id user1 来验证是否存在)
    创建一个用户后,自动在 /home建立Home目录,并且创建一些隐藏文件。同时,在 /etc/passwd 这个文件里会加入新用户user1的数据,/etc/shadow里面也有会相关数据(密码相关)。如果没有组的话,创建一个同名的组。
userdel 删除用户
    userdel user1
    userdel -r user1 同时删除Home目录
passwd 修改用户密码
    passwd user1
    passwd更改当前用户密码
    /etc/passwd 和 /etc/shadow 里面的数据也被删除
usermod 修改一个用户账户
    usermod -d /home/other user1  Home目录从 /home/user1 改成 /home/other
chage 修改用户生命周期    设置用户密码的过期时间,甚至用户本身的过期时间

组管理命令

groupadd 新建用户组
    groupadd group1
    useradd user1
    usermod -g group1 user1 把user1这个用户的组改成group1
    useradd -g group1 user2 新建用户user2时就把它放到group1组下
groupdel 删除用户组    groupdel group1 删除组group1

用户切换

su 切换用户
    su - USERNAME 使用 login shell 方式切换用户
    su USERNAME 不完全切换,比如还是在 /root下而不会自动跳转到用户家目录

sudo 以其他用户身份执行命令
    visudo 设置需要使用sudo的用户(组)

用户和用户组的配置文件介绍

/etc/passwd 用户配置文件,7个字段

user3:x:1003:1003::/home/user3:bin/bash
user3:用户名称
x:是否需要密码验证,x表示需要,空表示不需要
1003:用户的uid,用户的id信息,唯一识别用户的标识。root是0。
1003:用户的gid,表示组id信息
第五个字段:注释
/home/user3:Home目录
/bin/bash:用户登录后的命令解释器。/sbin/nologin 表示不能登录

/etc/shadow 保存用户和用户密码相关信息的
第一个字段:用户名称
第二个字段:用户加密过后的密码(看到也没用,经过处理,即使相同的密码也会显示不同)

/etc/group 用户组相关的配置文件,4个字段
group:x:10:another
group:组的名称
x:是否需要密码验证
10:gid
another:其他组设置,说明another这个用户的第二个组是group比如输入 id user1uid=1001(user1) gid=1001(group1) 组=1001(group1)id anotheruid=1002(another) gid=1002(another) 组=1003(group)  查找another信息,发现他的第二个组是group

文件和目录的权限表示方法

文件类型
-    普通文件
d   目录文件
b   块特殊文件
c   字符特殊文件
l    符号链接
f    命名管道
s    套接字文件


文件权限的表示方法

    字符权限表示方法
    r    读
    w    写
    x    执行

    数字权限的表示方法
    r=4
    w=2
    x=1

文件权限的表示方法
rwxrwxrwx
第一个表示文件属主的权限,第二个表示文件属组的权限,第三个表示其他用户的权限

创建新文件有默认权限,根据umask值计算,属主和属组根据当前进程的用户来设定


目录权限的标识方法
x    进入目录
rx   显示目录内的文件名
wx   修改目录内的文件名

文件权限的修改方法和数字表示方法

修改权限命令(测试的时候别用root,root不受限制)

chmod    修改文件、目录权限
    chmod u+x /tmp/testfile    u表示属主
    chmod u=rwx /tmp/testfile  
    chmod g-r  /tmp/testfile   g表示属组
    chmod 0-r /tmp/testfile    o表示其他用户
    chmod a+r /tmp/testfile   a表示所有
    chmod 755 /tmp/testfile如果属主没有权限,所属的组有权限,以属主为准,还是没有权限。
chown    更改属主、属组
    chown user1 /test   把test这个目录的属主改成user1
    chown :group /test   把test这个目录的属组给成group    chown user1:group /test   一起修改
chgrp    可以单独更改属组、不常用

linux一般创建一个文件默认会赋予666权限,然后根据用的umask值来计算。
用户默认umask值为022,所以一般是 666-022=644,对应rw-r--r--

特殊权限

SUID  用于二进制可执行文件,执行命令时取得文件属主权限
      如,/usr/bin/passwd

SGID  用于目录,在该目录下创建新的文件和目录,权限自动更改为该目录的属组
      文件共享时使用
SBIT  用于目录,该目录下新建的文件和目录,仅root和自己可以删除
      如 /tmp

网络管理

网络状态查看

net-tools VS iproute

1. net-tools
    ifconfig
    route
    netstat
    
2. iproute2
    ip
    ss
  • 网卡名称
ifconfig查看网卡名称
        · eth0 第一块网卡(网络接口)
        · 你的第一个网络接口可能叫做下面的名字
            · eno1 板载网卡
            · ens33 PCI-E网卡
            · enp0s3 无法获取物理信息的 PCI-E 网卡
            · CentOS7使用了一致性网络设备命名,以上都不匹配则使用eth0
 
     当工作中大量管理网卡,所有设备的网卡最好都是以 eth0 命名,这样可以批量操作。
     网络接口命名修改
     网卡命名规则受 biosdevname 和 net.ifnames 两个参数影响
     编辑 /etc/default/grup 文件,增加 biosdevname=0 net.ifnames=0
     更新 grub
         # grub2-mkconfig -o /boot/grub2/grub.cfg
     重启
         # reboot

     组合,biosdevname=0 net.ifnames=0,则网卡名为 eth0
              biosdevname=1 net.ifnames=0,则网卡名为 em1
              biosdevname=0 net.ifnames=1,则网卡名为 ens33
  • ifconfig
普通用户要使用ifconfig,要使用 /sbin/ifconfig
如果只想要看某一张网卡,可以 ifconfig 网卡名

mii-tool eth0  查看网卡物理连接情况
route -n 查看网关(路由),使用 -n 参数不解析主机名(把ip解析成域名)
  • 网络配置命令
ifconfig <接口> <IP地址> [netmask 子网掩码]      设置网卡的ip地址
ifup <接口>    启用网卡
ifdown <接口>    禁用网卡
  • 网关配置命令
添加网关
route add default gw <网关ip>
route add -host <指定ip> gw <网关ip>
route add -net <指定网段> netmask <子网掩码> gw <网关ip>

网络故障排除

ping 检测是否连接到主机
    ping www.baidu.com 
traceroute  跟踪当前主机到目标主机的网络状态,-w 1超时最多等1秒
    traceroute -w 1 www.baidu.com
    
mtr  显示自己主机的网络状态

nslookup  域名解析成ip
    nslooup www.baidu.com

telnet  检测端口
    telnet www.baidu.com 80

tcdump  网络抓包   -i any 抓取所有网卡里的数据包,-n 把域名解析成 ip ,port 80 抓取指定端口  host 10.0.0.1 抓取当前主机到某个主机的数据包
    tcpdump -i any -n port 80
    tcpdump -i any -n host 10.0.0.1
    tcpdump -i any -n host 10.0.0.1 and port 80
    tcpdump -i any -n host 10.0.0.1 and port 80 -w /tmp/filename 捕获并且保存

netstat 监听地址 -n 域名转换,-t 显示tcp ,-p 进程 ,-l tcp状态 listen
    netstat -ntpl

ss 跟netstat一样,参数也一样,显示的格式不一样

网络服务管理程序分为两种,分别是 SysV 和 systemd(centos7)
service network status|start|stop|restart

网络配置文件

/etc/sysconfig/network-scripts/ifcfg-eth0 (网卡配置项)
/etc/hosts

软件包管理

rpm

rpm 命令常用参数
    -q 查询软件包    rpm -qa 查询所有软件包    rpm -q vim-common 查询某个软件包
    -i  安装软件包    rpm -i vim-enhanced-7.4.160-5.el7.x84_64.rpm  (要全称)
    -e 卸载软件包    rpm -e vim-enhanced   (只要名字,不需要版本号等)用 rpm 安装的问题:如果一个软件包依赖其他软件包,那么就会安装失败。需要操作者自己解决依赖关系。

yum

CentOS yum源
    http://mirror.centos.org/centos/7/
国内镜像
    https://opsx.alibaba.com/mirror
yum 配置文件
    /etc/yum.repos.d/CentOS-Base.repo

可以修改配置文件
[base]
name=CentOS-$releasever - Base -mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/
             http://mirrors.cloud.aliyuncs.com/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7

或者直接用别人已经写好的配置文件
wget -O /etc/yum.repo.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo需要清除缓存yum makecache

常用选项

install 安装软件包
remove 卸载软件包
list |grouplist 查看软件包
update 升级软件包

其他安装方式

二进制安装
源代码编译安装

wget https://openresty.org/download/openresty-1.15.8.1.tar.gz
tar zxf openresty-VERSION.tar.gz
cd openresty-VERSION/
./configure --prefix=/usr/local/openresty
make -j2   (用2核编译)
make isntall

升级内核

rpm 格式内核
    查看内核版本
        uname -r
    升级内核版本
        yum install kernel-3.10.0   这种方式一般不能升级到最新
        epel软件仓库会有较高的软件版本。yum install epel-release -y
    升级已安装的其他软件包和补丁
        yum update    除了升级内核,还会升级软件包。正常不要使用。


源代码编译安装内核
yum install gcc gcc-c++ make ncurses-devel openssl-devel elfutils-libelf-devel

下载并解压缩内核
https://www.kernel.org
tar xvf linux-5.1.10.tar.xz -C /usr/src/kernels

配置内核编译参数
cd /usr/src/kernels/linux-5.1.10/
make menuconfig | allyesconfig | allnoconfig
make allyesconfig (无脑全选)

使用当前系统内核配置
cp /boot/config-kernelversion.platform /usr/src/kernels/linux-5.1.10/.config


查看cpu
lscpu

编译
make j2 all

安装内核
make modules_install
make install

进程管理

进程的概念和查看进程

进程-运行中的程序,从程序开始运行到终止的整个生命周期是可管理的

查看命令
ps
    -e 表示所有的终端运行的进程
    -f  显示更多信息,比如 UID、PPID(父进程)、CMD(命令的完整路径)
    -L  多显示 LWP ,线程信息
    ps -eLf  常用命令

pstree  查看进程树
    
top  动态查看进程信息top -p 进程号

结论:
进程也是树形结构
进程和权限有着密不可分的关系

进程的优先级调整

调整优先级
    nice 范围从 -20 到 19,值越小优先级越高,抢占资源就越多
        nice -n 10 ./rest.sh  启动的时候调整为 10
    renice 重新设置优先级
        renice -n 15 19312  已经处于启动的情况下进行调整。根据进程号
进程的作业控制
    &符号,后台运行
        ./test.sh &
    jobs 把处于后台运行的程序调到前台显示
        jobs 能得到一个编号
        fg 编号,可以调到前台
    ctrl +z,把已经处于前台的程序调到后台,状态会stop

信号

信号是进程间通信方式之一,典型用法是:终端用户输入中断命令,通过信号机制停止一个程序的运行。

使用信号的常用快捷键和命令
kill -l 查看所有的信号
    SIGINT 通知前台进程组终止进程 ctrl + c,2号信号
    SIGKILL 立即结束程序,不能被阻塞和处理 kill -9 pid ,9号信号 

守护进程和系统日志

守护进程(精灵进程)

使用 nohup 与 & 符号配合运行一个命令 (nohup进程不是守护进程)
    nohup 命令使进程忽略 hangup(挂起)信号。关掉终端这个进程依然可以运行,忽略输入并且把输出打印到 nohup.out
守护进程(daemon)和一般进程有什么差别呢?
    开机自启,守护进程不需要终端,输出可以打印到特殊的文件中,进程所占用的目录是根目录。cd /proc/ 这个目录是内存信息,相应的进程会有进程号同名的目录。

使用 screen 命令,进入screen环境后,如果远程连接断掉了,可以通过screen恢复工作现场
    screen 进入 screen 环境
    ctrl +a然后再单独按d退出(detached)screen 环境
    screen -ls 查看 screen 的会话
    screen -r sessionid 恢复会话系统日志文件 /var/log系统常规日志:messages内核运行情况:dmesg安全日志  secure定时任务日志 cron

内存和磁盘管理

内存和磁盘使用率查看

内存使用率查看
free
    -m  以兆的方式显示
    -g   以G的方式显示,但是会被四舍五入。一般不用
top

磁盘使用率的查看
fdisk
    -l 查看
    磁盘分区一块硬盘最多分15个分区
df 既能够看到分区,又能够看到挂载到的目录
    -h 人性化可读
du (实际占用的空间)
    -h 人性化显示
    -s  只显示总计
du与ls的区别
    du 是实际占用的,ls算上空洞数据。

常见文件系统

Linux 支持多种文件系统,常见的有:

ext4(centos6)
xfs(centos7)
NTFS(需安装额外软件,window常用,有版权)

磁盘分区和挂载

常用命令
fdisk
mkfs
parted
mount


常见配置文件
/etc/fstab

用fdisk创建分区(一个硬盘设备可以创建多个分区,也可以创建一个)
1:fdisk -l 查看有几个硬盘设备及分区
2:fdisk /dev/sdc    (比如有设备sdc,则可以针对sdc进行分区)
3:之后 m 键是帮助
4:n 表示新建一个分区
5:新建分区时,需要选择主分区和扩展分区,其中 p表示主分区,最多有4个。e表示扩展分区(里面可以建立逻辑分区)。一般把一块硬盘划分为一个主分区。使用扩展分区时,只能建立3个主分区。
6:选择区分编号1-4
7:指定分区扇区大小,默认2048
8:指定分区大小。默认全部。可以 + 20G等可以选择分区大小
9:q 表示退出,分区不生效。w 表示生效

建立完分区后,需要对分区进行格式化。

mkfs.ext4  mkfs.xfs等命令
mkfs.ext4 /dev/sdc1

然后要进行操作,linux里都是文件级别的操作,需要挂载到某个目录下
mkdir /mnt/sdc1
mount /dev/sdc1 /mnt/sdc1 挂载上去
对/mnt/sdc1的读写就会落入sdc1设备上

1、一个硬盘
2、进行分区
3、格式化
4、挂载
5、对指定目录进行操作


需要注意的事情:
如果一个硬盘大于 2T ,不能使用 fdisk 进行分区,需要使用 parted
parted /dev/sdd
help 获取帮助

mount 进行挂载是临时的,不是固化的
vim /etc/fstab
在文件中新增下面一句话
/dev/sdc1 /mnt/sdc1 ext4 defaults(表示权限)0 0

系统综合状态查询

使用 sar 命令查看系统综合状态
    sar -u 1 10 CPU的查看,每隔1秒做采样,采样10次,
    sar -r 1 10 看内存
    sar -b 1 10 IO的情况(磁盘读写)
    sar -d 1 10 查看每块磁盘的读写
    sar -q 1 10 查看进程
使用第三方命令查看网络流量
yum install epel-release
yum install iftop (网络情况)
iftop -p (默认eth0)


喜欢就支持以下吧
点赞 0

发表评论

快捷回复: 表情:
aoman baiyan bishi bizui cahan ciya dabing daku deyi doge fadai fanu fendou ganga guzhang haixiu hanxiao zuohengheng zhuakuang zhouma zhemo zhayanjian zaijian yun youhengheng yiwen yinxian xu xieyanxiao xiaoku xiaojiujie xia wunai wozuimei weixiao weiqu tuosai tu touxiao tiaopi shui se saorao qiudale qinqin qiaoda piezui penxue nanguo liulei liuhan lenghan leiben kun kuaikule ku koubi kelian keai jingya jingxi jingkong jie huaixiao haqian aini OK qiang quantou shengli woshou gouyin baoquan aixin bangbangtang xiaoyanger xigua hexie pijiu lanqiu juhua hecai haobang caidao baojin chi dan kulou shuai shouqiang yangtuo youling
提交
评论列表 (有 0 条评论, 537人围观)

最近发表

热门文章

最新留言

热门推荐

标签列表