Linux

版权申明:本文为原创文章,转载请注明原文出处

原文链接:http://blog.pp6f.com/2022/03/10/System/Linux/

~

索引


Linux

相关网站

相关系统

  • CentOS - CentOS 是一个基于Red Hat Linux 提供的可自由使用源代码的企业级Linux发行版本
  • Ubuntu - Ubuntu(友帮拓、优般图、乌班图)是一个以桌面应用为主的开源GNU/Linux操作系统,Ubuntu 是基于Debian GNU/Linux,支持x86、amd64(即x64)和ppc架构,由全球化的专业开发团队(Canonical Ltd)打造
  • Debian - Debian 包含Linux操作系统和一些免费的软件分发。Debian是通过许多志愿者的工作来维持和更新的
  • 等等…

安全增强型linux

  • 介绍文章

  • 查看当前哪种模式

    $ getenforce
    
  • 临时切换成许可模式

    $ setforce 0
    
  • 临时切换成强制模式

    $ setforce 1
    
  • 修改文件 永久关闭

    vi /etc/selinux/config
    

    修改项 SELINUX=disabled


Ubuntu

apt 与 apt-get 命令 用于更新软件

  • 目前在Ubuntu18.04以后,尽量使用apt,而不是apt-get。apt可以给出更多的建议安装等提示。

  • 在root用户下, apt upgrade firefox 可以更新firefox软件

  • 普通用户下,sudo apt upgrade firefox ,更新firefox软件。(sudo是以当前用户获得root临时权限)

  • apt与apt-get的用法:(apt是新的命令,有一些操作不支持,apt-get是老命令,可以支持更多的操作)

    apt命令 apt-get命令 命令功能
    apt install apt-get install 安装软件包
    apt remove apt-get remove 移除软件包
    apt autoremove apt-get autoremove 卸载软件包
    apt purge apt-get purge 移除软件包及配置文件
    apt update apt-get update 刷新存储库索引
    apt upgrade apt-get upgrade 升级所有可升级的软件包
    apt autoremove apt-get autoremove 自动删除不需要的包
    apt full-upgrade apt-get dist-upgrade 在升级软件包时自动处理依赖关系
    apt search apt-cache search 搜索应用程序
    apt show apt-cache show 显示装细节
    apt list 列出包含条件的包(已安装,可升级等)
    apt edit-sources 编辑源列表

运行AppImage文件

  • 文件右键 - 属性 - 权限 - 允许作为程序运行

关闭Ubuntu20 桌面动画 提升流畅性

  • 关闭动画命令

      gsettings set org.gnome.desktop.interface enable-animations false
    
  • 打开动画命令

      gsettings set org.gnome.desktop.interface enable-animations true
    

CentOS

相关网站

配置

开启SSH

配置网卡IP地址

  • 要配置网卡IP 先获取网卡名字

  • 使用ip addr获取网卡信息 类似下面的信息 ens33 就是网卡名字

      2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
          link/ether 00:0a:23:25:d2:d1 brd ff:ff:ff:ff:ff:ff
          inet 192.168.1.2/24 brd 192.168.1.255 scope global noprefixroute dynamic ens33
          valid_lft 35682sec preferred_lft 35682sec
          inet6 ba80::2aea:f3af:cddf:1232/64 scope link noprefixroute
          valid_lft forever preferred_lft forever
    
  • 编辑ens33网卡配置文件

      vi /etc/sysconfig/network-scripts/ifcfg-ens33
    
      # 修改
      BOOTPROTO="dhcp"
      ONBOOT="yes"
    

    修改后这是 DHCP 模式 自动获取IP

  • 配置静态IP地址

      vi /etc/sysconfig/network-scripts/ifcfg-ens33
    
      # 修改
      bootproto=static
      onboot=yes
      # 在文件尾部追加
      IPADDR=192.168.1.2
      NETMASK=255.255.255.0
      GATEWAY=192.168.1.1
      DNS1=223.5.5.5
      DNS2=8.8.8.8
    

    修改后这是 静态 模式

  • 重启网络服务

      sudo systemctl restart network
    
  • 结束!

添加开机启动

yum 软件安装工具

  • yum - 软件包安装工具

  • 更新软件包

    yum update
    
  • 安装软件

    yum install <name>
    
  • 卸载软件

    yum uninstall <name>
    
  • 查询已安装的软件

    yum list
    #或
    yum list <name>
    
  • 查询所有软件库

    yum search <name>
    
  • 更新缓存yum源

    yum clean all
    yum makecache
    
  • 查看yum软件版本

    yum repolist all | grep <name>
    

添加包签名到信任密钥列表

  • 如:

      sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm
    

CentOS 7安装Gnome GUI 图形界面

当你安装的centos是服务器版本的时候,系统默认是不会安装 CentOS 的图形界面程序的,比如:gnome或者kde, 那么如果你想在图形界面下工作的话,可以手动来安装CentOS Gnome GUI包。

  • 在安装Gnome 包之前,我们需要先检查下安装源是否正常,因为我们要通过yum命令来安装gnome包,而yum命令式通过yum 源来下载安装包的。
  1. 在命令行下输入下面的命令来安装 Gnome 包

     $ sudo  yum groupinstall "GNOME Desktop" "Graphical Administration Tools"
    
  2. 更新系统的运行级别
    如果你想 在系统下次 启动的时候自动进入图形界面,那么我们需要更改系统的运行级别,输入下面的命令来启用图形界面。

     $sudo ln -sf /lib/systemd/system/runlevel5.target /etc/systemd/system/default.target
    
  3. 重启系统 当系统再次启动的时候,就会默认进入图形界面。通过VNC登陆服务器

htop 进程管理查看工具

  • 启用epel版本

    • htop工具在epel源中提供

    • 启用epel版本命令

        yum -y install epel-release
      
  • yum 安装 htop

      yum -y install htop
    
  • 运行htop

      htop
    
  • htop常用按键

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    F1 : 查看htop使用说明
    F2 : 设置
    F3 : 搜索进程
    F4 : 过滤器,按关键字搜索
    F5 : 显示树形结构
    F6 : 选择排序方式
    F7 : 减少nice值,这样就可以提高对应进程的优先级
    F8 : 增加nice值,这样可以降低对应进程的优先级
    F9 : 杀掉选中的进程
    F10 : 退出htop

    / : 搜索字符
    h : 显示帮助
    l :显示进程打开的文件: 如果安装了lsof,按此键可以显示进程所打开的文件
    u :显示所有用户,并可以选择某一特定用户的进程
    s : 将调用strace追踪进程的系统调用
    t : 显示树形结构

    H :显示/隐藏用户线程
    I :倒转排序顺序
    K :显示/隐藏内核线程
    M :按内存占用排序
    P :按CPU排序
    T :按运行时间排序

    上下键或PgUP, PgDn : 移动选中进程
    左右键或Home, End : 移动列表
    Space(空格) : 标记/取消标记一个进程。命令可以作用于多个进程,例如 "kill",将应用于所有已标记的进程
  • 相关文章


常用命令

sudo

  • 在命令前加入sudo 以root权限执行命令

  • 进入root用户权限

      sudo -i
      sudo su root
    

systemctl

服务命令

  • /etc/systemd/system//usr/lib/systemd/system/ 目录内创建testapp.service服务文件

  • 内容

  • 命令

      //设置开机启动
      sudo systemctl enable NAME.service
      //关闭开机启动
      sudo systemctl disable NAME.service
      //启动服务
      sudo systemctl start NAME.service
      //重启服务
      sudo systemctl restart NAME.service
      //停止服务
      sudo systemctl stop NAME.service
      //查询状态
      sudo systemctl status NAME.service
      //修改service文件后 执行重载命令
      systemctl daemon-reload
    

命令行/图形界面 切换

  • 获取当前的默认target

      systemctl get-default
    
  • 设置开机默认进入命令行

      # 输入命令:
      sudo systemctl set-default multi-user.target 
      # 重启:
      reboot
    
  • 设置开机默认进入图形界面

      # 输入命令:
      sudo systemctl set-default graphical.target  
      # 重启:
      reboot
    
  • Linux系统7个运行级别

    • 0:关机,停机模式、
    • 1:单用户模式、
    • 2:多用户模式、
    • 3:完整的多用户文本模式、
    • 4:系统未使用,保留一般不用、
    • 5:图形化模式、
    • 6:重启模式

    运行级就是操作系统当前正在运行的功能级别。这个级别从0到6 ,具有不同的功能。
    具体说明:图形化模式,登陆后进入图形GUI模式或GNOME、KDE图形化界面,如X Window系统。命令行输入

      # GUI模式
      ln -sf /lib/systemd/system/runlevel5.target /etc/systemd/system/default.target
    
      # 命令行模式
      ln -sf /lib/systemd/system/runlevel3.target /etc/systemd/system/default.target
    
      # 重启
      reboot
    

切换界面

  • 按键盘的 Control + Alt + {F1 - F7}

ip addr 获取网卡信息

    ip addr

echo

  • 输出到命令行窗口

      $ echo 'abc\n'
      //或 使用 -e 使用转义符
      $ echo -e 'abc\n'
    
  • 输出到文件

      // 修改覆盖文件内容
      $ echo 'abc' > a.txt
      // 追加文件内容 原内容会保留
      $ echo 'abc' >> a.txt
    

ln 创建软链接命令

  • 创建软连接

      $ ln -s 程序路径包括程序文件名 /usr/bin/自定义程序名
      # 例
      $ ln -s /usr/local/bin/python3.6 /usr/bin/python3
      # 设置后 可以在任意文件夹位置 执行python3
    

rm 删除文件/文件夹

  • rm命令
    -r 向下递归所有文件夹即文件 一并删除
    -f 就是直接强行删除,不作任何提示的意思。

      # 强制删除文件/文件夹/路径下的所有文件
      rm -rf <文件/文件夹名/路径>
    

mkdir 创建文件夹

  • mkdir命令

      mkdir <文件夹名>
    

pwd 显示当前路径

  • pwd 命令

      pwd
    

cd 进入文件夹

  • 进入当前路径下的abc文件夹

      cd abc
    
  • 进入绝对路径

      cd /usr/bin
      # 进入用户文件夹
      cd ~/
    

ls/dir/ll 显示文件/文件夹列表

  • 显示当前路径列表

      ls
      # 显示所有文件/文件夹 包括隐藏文件
      ls -al
    
  • 显示指定路径列表

      ls /root
      # 显示root路径是否存在以a开头的文件/文件夹
      ls /root/a*
    
  • 帮助信息

      ls --help
    

mv 移动文件

  • 移动文件

      mv oldpath newpath
    
  • 重命名

      mv oldfilename newfilename
    

ps 查进程

  • 命令

      ps 命令查找与进程相关的PID号:
      ps a 显示现行终端机下的所有程序,包括其他用户的程序。
      ps -A 显示所有程序。
      ps c 列出程序时,显示每个程序真正的指令名称,而不包含路径,参数或常驻服务的标示。
      ps -e 此参数的效果和指定"A"参数相同。
      ps e 列出程序时,显示每个程序所使用的环境变量。
      ps f 用ASCII字符显示树状结构,表达程序间的相互关系。
      ps -H 显示树状结构,表示程序间的相互关系。
      ps -N 显示所有的程序,除了执行ps指令终端机下的程序之外。
      ps s 采用程序信号的格式显示程序状况。
      ps S 列出程序时,包括已中断的子程序资料。
      ps -t <终端机编号> 指定终端机编号,并列出属于该终端机的程序的状况。
      ps u 以用户为主的格式来显示程序状况。
      ps x 显示所有程序,不以终端机来区分。
    
  • 常用命令

      ps aux
    
      # 使用grep管道 查找指定程序名
      ps aux | grep <程序名>
    
      # 查看所有进程
      ps -ef
    

kill 杀死进程

  • 杀死指定PID号进程 可以用ps命令查找PID号

      kill -9 333
    
  • 杀死指定名的进程

      kill -9 <NAME>
    

reboot 重启

    reboot

poweroff 关机

    poweroff

sudo passwd 更改当前用户密码

    sudo passwd

top Linux系统状况

  • 监控Linux系统状况 CPU 内存

  • 查看内存使用说明 (shift+m 按照排名) 按 Q 退出

  • 类似任务管理器

  • 参考菜鸟教程

      top
    

free -m 查看内存占用

    free -m

df -h 查看硬盘占用率

    df -h

whereis 搜索命令

  • 搜索包含python的路径名

      whereis python
    

nohup 后台运行程序

  • 设置进程为后台进程

  • 运行程序前面加 nohup 表示不挂断的运行命令

  • 在运行程序后面加入 & 表示这个命令放在后台执行

      # 使 dotnet CoreWebDemo.dll 在后台运行 即便关闭远程连接一样可以运行
      nohup dotnet CoreWebDemo.dll &
    

jobs 查看后台进程

  • 查看后台进程 可以通过kill -9 进程ID 来结束进程

      jobs -l
    

chmod/chown/chgrp 修改文件/文件夹权限

  • chmod 命令 修改文件权限

      # 增加写入权限
      chmod u+w 文件名
    
      # 去除写入权限
      chmod u-w 文件名
    
      # 直接修改权限 777 表示所有权限
      chmod 777 文件名
    
  • chown 命令 修改文件所有者

      # 将 /u 的属主更改为"root"。
      chown root /u
    
      # 和上面类似,但同时也将其属组更改为"staff"。
      chown root:staff /u
    
      # 将 /u 及其子目录下所有文件的属主更改为"root"。
      chown -hR root /u
    
      # 将 /u 目录下所有文件和子目录的属主改为root
      chown -R root /u
    
  • chgrp 命令 修改文件用户组

      # 将 /u 的属组更改为"staff"。
      chgrp staff /u
    
      # 将 /u 及其子目录下所有文件的属组更改为"staff"。
      chgrp -hR staff /u
    
      # 如果要修改该目录下所有文件和目录,使用-R参数。
      chgrp -R staff /u
    

用户/用户组管理

  • 创建/删除用户

      # 建立新用户账号
      useradd
    
      # 删除用户
      userdel
    
  • 修改账户

      # 设置用户密码
      passwd user1
    
      # 修改账户
      usermod
    
      # 将用户 user1的登录名改为 u1
      usermod –l u1 user1
    
      # 将用户 user1 加入到 users组中,
      usermod –g users user1
    
      # 将用户 user1 目录改为/users/us1
      usermod –d /users/us1 user1
    
  • 查看用户

      # 查看当前用户
      w
      who
      users
      
      # 查看系统中所有用户
      grep bash /etc/passwd
      # 或
      cat /etc/passwd | cut -f 1 -d:
    

查看磁盘空间占用

  • 磁盘空间占用情况 命令

      df -hl
    
  • 查看指定目录空间占用情况 命令

      du -hl --max-depth=1 /root
    
  • 查看当前目录空间占用情况 命令

      du -hl
    

常用工具

vi/vim文本编辑工具

  • 编辑文件

      $ vim a.txt
      $ vi a.txt
    

    进入文件后 按键盘 I 进入编辑模式 按 esc 退出编辑模式进入命令模式

  • 命令模式:

    • shift+g - 光标直接跳转到最后一行
    • shift+a - 光标跳转到本行末尾 并进入编辑模式
    • shift+z+z - 保存退出
    • I - 进入编辑模式
    • ESC - 退出编辑模式/进入命令模式
    • :w - 保存
    • :wq - 保存退出
    • :wq! - 强制保存退出
    • :q! - 强制退出不保存

curl 请求网页数据

  • 参考文章

  • 访问网页保存到文件

      $ curl -o filename.txt http://192.168.1.1/1.txt
    
  • 发送POST请求的数据体

      $ curl -d'login=aaa&password=111'-X POST http://192.168.1.1/login
      # 或
      $ curl -d 'login=aaa' -d 'password=111' -X POST http://192.168.1.1/login
      # 读取本地文件发送
      $ curl -d '@data.txt' http://192.168.1.1/login
    
  • 发送GET请求

      $ curl -G -d 'login=aaa&password=111' http://192.168.1.1/login
    

wget 下载工具

  • 命令

      wget http://1.1.1.1/abc.tar
    

    会下载到当前文件夹

  • 还可以用来测试网速 找一个大文件直接下载

netstat 查看活动连接

    # centos7 默认没有netstat命令 需要安装 net-tools 
    yum install -y net-tools

    netstat

    # 查看监听(Listen)的端口
    netstat -lntp

    # 查看所有运行中的服务的详细信息
    netstat -tulpn

    # 查看端口被占用情况
    netstat -tunlp|grep 端口号

    # 查看所有建立的TCP连接
    netstat -antp

    # 查看所有端口占用情况
    netstat -antp | grep :

    # 查看80端口被哪个服务占用 或 netstat -antpuel  | grep ":22" | grep  -v grep(过虑grep本身)
    netstat -antp | grep :80

arp 获取局域网信息

  • ARP命令可用于查询本机ARP缓存中IP地址和MAC地址的对应关系

      arp -a
      arp
    

tar 解压/压缩工具

  • 打包成tar.gz压缩包

      # tar -zcvf renwolesshel.tar.gz /renwolesshel
    
  • 解压tar.gz压缩包

      # tar zxvf renwolesshel.tar.gz
    
  • 打包成tar.bz2格式压缩包

      # tar -jcvf renwolesshel.tar.bz2 /renwolesshel
    
  • 解压tar.bz2格式的压缩包

      # tar jxvf renwolesshel.tar.bz2
    
  • 压缩成zip格式

      # zip -q -r renwolesshel.zip renwolesshel/
    
  • 解压zip格式的压缩包

      # unzip renwolesshel.zip
    

Linux服务器流量带宽监控/统计

Linux C语言生成可执行文件

firewalld 防火墙

  • 查看防火墙状态

      sudo systemctl status firewalld
    

    看到active(running)就意味着防火墙打开了

  • 启动防火墙

      sudo systemctl start firewalld
    
  • 重启防火墙

      sudo systemctl restart firewalld
    
  • 临时关闭防火墙

      sudo systemctl stop firewalld
    
  • 开机启动防火墙

      sudo systemctl enable firewalld
    
  • 开机不启动防火墙

      sudo systemctl disable firewalld
    
  • 查看防火墙规则

      firewall-cmd --list-all
    
  • 查看防火墙所有开放的端口

      firewall-cmd --zone=public --list-ports
    
  • 用户配置目录

      /etc/firewalld/
    
  • 添加自定义端口

      firewall-cmd --permanent --add-port=9999/tcp
      firewall-cmd --permanent --add-port=9999/udp
    

    –permanent //设置为持久
    –add-port //标识添加的端口

  • 还可以增加Zone命令 区概念

      //开放端口
      firewall-cmd --zone=public --permanent --add-port=9999/tcp
      firewall-cmd --zone=dmz --permanent --add-port=9999/tcp
    
      //关闭端口
      firewall-cmd --zone=public  --permanent --remove-port=5672/tcp
    

iptables 防火墙

  • 查看规则列表

      iptables -L -x -n
    
  • 放行端口

      iptables -I INPUT -p tcp --dport 80 -j ACCEPT
    
  • 保存规则 使用保存规则前 必须关闭firewalld 和 安装 iptables-services

      systemctl disable firewalld        //关闭防火墙
      yum install iptables-services        //安装iptables-services
      systemctl enable iptables        //启用iptables-services
      service iptables save            //保存规则
    

lsof 查看端口

    # 查看端口被占用情况
    lsof -i:端口号

.sh bash脚本

  • 参考维基百科的bash页面

  • 文件头加入

      # 表示该程序由/bin/bash来解释运行
      #!/bin/bash
    
  • 打印命令

      echo -e "\n测试脚本\n"
    

    打印带颜色的字符

      red='\e[91m'
      none='\e[0m'
      _red() { echo -e ${red}$*${none}; }
      echo -e "${red}这是红色${none}"
    
  • 读取命令行输入

      read -r
    
  • $ 表示后面的字符是变量

      a=1
      echo -e $a
      # 输出的是 1
      echo -e a
      # 输出的是 a
    
  • 退出命令

      exit 1
    
  • 判断

      # 判断yum是否已安装
      if [[ $(command -v yum) ]]; then
          echo -e "已安装yum"
      else
          echo -e "未安装yum"
      fi
    
      # 判断变量的值
      a=1
      if ((a == 1));then
          ((a = a + 1))
          echo -e $a
      else
          echo -e "a != 1"
      fi
    
      # 正则表达式 判断是否为数字
      a=586445612533425
      if [[ $a =~ (^)([0-9]+)($) ]]
      then
          echo -e "数字"
      else
          echo -e "非数字"
      fi
    
  • case

      a=3
      case $a in
      '1')
          echo -e "是1"
          ;;
      '2')
          echo -e "是2"
          ;;
      *)
          echo -e "都不是"
          ;;
      esac
    
  • 变量

      a = 1
      # 使用事 a 前面加 $ 例如这也 $a
    
    变量名 含义
    $0 shell或shell脚本的名字
    $* 以一对双引号给出参数列表
    $@ 将各个参数分别加双引号返回
    $# 参数的个数
    $_ 代表上一个命令的最后一个参数
    $$ 代表所在命令的PID
    $! 代表最后执行的后台命令的PID
    $? 获取上一个命令执行后的退出状态 echo $? 返回0执行成功 非0值执行失败
    $abc abc是变量名 引用变量
  • 转义符

      转义字符    扩展成...
      \a        响铃符
      \b        退格符
      \e        ANSI转义符,等价于\033
      \f        馈页符
      \n        换行符
      \r        回车符
      \t        水平制表符
      \v        垂直制表符
      \\        反斜杠
      \'        单引号
      \nnn        十进制值为nnn的8-bit字符(1-3位)
      \xHH        十六进制值为HH的8-bit字符(1或2位)
      \cx        control-X字符
    
  • 创建一个暂存文件 或 目录供shell script使用

      # 创建一个暂存目录
      path="$(mktemp -d)"
      echo $path
      # 创建一个暂存文件
      tmpfile="$(mktemp -t)"
      echo $tmpfile
    
发布于

2022-03-10

更新于

2023-03-10

许可协议

评论