系统

  • 关机:sudo shutdown -h now
  • 重启:sudo shutdown -r now
  • 服务开机自启动:systemctl enable <serviceName>
  • 对某服务进行操作:systemctl start|restart|stop|status <serviceName>

文件操作

  • 查看当前路径:pwd
  • 删除:rm
    • 删除非空文件夹-rf
    • 删除空文件夹-p
  • 移动/重命名:mv
  • 新建文件夹:mkdir
  • 查看文件:cat
  • 动态查看日志:tail -f
  • 查看历史命令:history
  • 复制cp
    • 文件夹复制-R
  • 解压zip文件:unzip oldName
  • 压缩zip文件:zip -r mydata.zip mydata #压缩mydata目录
  • 在指定文件中查找符合条件的字段:grep abcText path path path path
  • 查看当前目录下的所有目录以及子目录的大小:du -h
  • 查看当前目录的大小:du -sh
  • 查看当前目录的子文件的大小:du -d 1 -h

用户/用户组

用户

  • 添加用户:useradd [chenhao] -m
  • 删除用户:userdel [chenhao] -r
  • 修改用户配置:usermod
  • 用户信息存储文件:/etc/passwd(1.账号名称、2.密码、3.UID、4.GID、5.用户信息说明、6.主文件夹、7.Shell)
  • 用户密码存储文件:/etc/shadow(1.账号名称、2.密码、3.最近更动密码的日期、4.密码不可被更动的天数、5.密码需要重新更改的天数、6.密码需要更改期限前的警告天数、7.密码过期后的账号宽限时间、8.账号实效日期、9.保留)
  • 切换账号 :su [chenhao]
  • 忘记密码用root账号的passwd命令来重置:passwd xxxxx

用户组

  • 添加用户组:groupadd
  • 删除用户组:groupdel
  • 修改用户组配置:groupmod
  • 用户组信息存储文件:/etc/group(1.用户组名称、2.用户组密码、3.GID、4.此用户组支持的账号名称)
  • 查看当前用户加入的组:groups
  • 把某个用户加入用户组:usermod -a -G dockerName userName

性能

  • 所有cpu的占用情况:top
  • 网络带宽情况:vmstat
  • cpu占用前10的进程:ps aux|head -1;ps aux|grep -v PID|sort -rn -k +3|head
  • 内存占用前10的进程:ps aux|head -1;ps aux|grep -v PID|sort -rn -k +4|head
  • 对外服务连接数:netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
  • 查看磁盘空间使用率:df -hl

SSH

远程访问

  • 建立连接:
    • 密码连接:ssh xx@xxx.xx.xx.xx
    • 私钥连接:ssh -i xxx/id_rsa xx@xxx.xx.xx.xx
  • 退出:exit
  • ssh配置文件:/etc/ssh/sshd_config
  • 给普通用户打开ssh访问权限:
    1. vim /etc/ssh/sshd_config
    2. 找到AllowUsers
    3. 在后面添加用户名
    4. 重启ssh服务
  • 重启ssh服务:service sshd restart(有的是service ssh restart

修改主机名称

  • 设置名称:hostnamectl set-hostname
  • 立即生效:bash

效果如下:

  1. [root@<yourName> ~]$

定时任务

  • 编辑:crontab -e
  • 查看:crontab -l
  • 启动:sudo service cron start
  • 查看执行状态:sudo service cron status

网络

  • 查看当前网络环境:ifconfig
  • 查看当前wifi连接:iwconfig
  • 查看公网ip:
    • curl 'https://api.ipify.org?format=json'
    • curl ipinfo.io

NVC(可视化界面)

  • 添加桌面:
  • 关闭桌面:tightvncserver -kill :1
  • 查看正在运行的桌面:ps ax | grep Xtightvnc | grep -v grep
  • 修改密码:vncpasswd
  • ps:NVC是RFB协议连接的,所以小米路由的Nat转发只能传输ftp和unp协议,所以无法通过外网访问。

蓝牙管理

  • 激活蓝牙设备:hciconfig 0(hci0) up
  • 查看蓝牙设备:hciconfig / hciconfig -a
  • 查看是否已连接:hcitool con
  • 扫描设备:hcitool scan 会列出周围所有可见的蓝牙设备

Linux下端口被占用解决

  • 查找被占用的端口
    • netstat -tln
    • netstat -tln | grep 8083
  • 查看端口属于哪个程序?端口被哪个进程占用
    • lsof -i :8083
  • 杀掉占用端口的进程
    • kill [-9] 进程id

端口使用规范

  • 端口号 0 不使用;
  • 端口号 1 - 1023,系统默认只给root使用;
  • 端口号 1024 - 4999 由客户端程序自由分配;
  • 端口号 5000 - 65535 由服务器端程序自由分配;

查看系统版本

  • 显示电脑以及操作系统的相关信息:uname -a
  • 正在运行的内核版本:cat /proc/version
  • 显示的是发行版本信息:cat /etc/issue
  • ps:lsb_release -a (适用于所有的linux,包括Redhat、SuSE、Debian等发行版,但是在debian下要安装lsb)

环境变量

  • 各配置文件的作用
    • /etc/profile此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行.并从/etc/profile.d目录的配置文件中搜集shell的设置.
    • /etc/bashrc为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取.
    • ~/.bash_profile每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件.
    • ~/.bashrc该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该文件被读取.
    • ~/.bash_logout当每次退出系统(退出bash shell)时,执行该文件.
    • /etc/profile中设定的变量(全局)的可以作用于任何用户,而~/.bashrc等中设定的变量(局部)只能继承/etc/profile中的变量,他们是”父子”关系.
  • 注意事项
    • ~/.bash_profile 是交互式、login 方式进入 bash 运行的
    • ~/.bashrc 是交互式 non-login 方式进入 bash 运行的
    • 通常二者设置大致相同,所以通常前者会调用后者。
    • 设置生效:可以重启生效,也可以使用命令:source

文件权限

查看权限

  • 通过 llls -l可以看到权限信息
  • 由十个字符组成
    • 第一个字符代表着文件时“目录、文件或链接文件等”
      • d,目录
      • -,文件
      • l,链接文件(linkFile)
      • b,设备文件里面的可供存储的接口设备
      • c,设备文件里面的串行端口设备,例如键盘、鼠标(一次性读取设备)
    • 接下来九个字符三个为一组
      • 依次是
        • 文件所有者的权限
        • 用户组的权限
        • 其它非本用户组的权限
      • 每组中的字母含义,以及对应的分数(相加之和即是权限值)
        • r,可读,4
        • w,可写,2
        • x,可执行,1

修改权限

  • 改变所属用户组:chgrp
    • 示例:chgrp users install.log
    • 需要被设置的用户组在/etc/group中存在
  • 改变文件的所有者:chown
    • 示例:chown bin install.log
    • 需要被设置的所有者在/etc/passwd中存在
    • 它同时还可以设置用户组,示例:chown root:root install.log,同时将所有者和用户组改为root
  • 改变文件的权限:chmod
    • 示例:chmod 777 .bashrc
    • 三个数字分别表示文件“所有者的权限、用户组的权限、其它非本用户组的权限”的权限值
  • ps:前面三个方法都可以带上-R作为参数,带上它以后,会进行递归影响文件夹下的子文件。

添加sudo

  1. 使用root执行yum install sudo
  2. 使用root执行visudo,找到root ALL=(ALL) ALL,在下面输入[userName] ALL=(ALL) ALL,保存退出
  3. 上面指定的userName就有权限使用sudo了,不执行第二步的操作会出现xxx is not in the sudoers file的情况。

RSA密钥

  • 创建:ssh-keygen -t rsa
  • 默认密钥文件生成目录:/root/.ssh/
  • 公钥添加到authorized_keys: cat <your_public_key_file> >> ~/.ssh/authorized_keys

注意把authorized_keys文件的权限应配置成600。

防火墙

  • 查看防火墙状态:systemctl status firewalld
  • 开启防火墙:systemctl start firewalld
  • 关闭防火墙:systemctl stop firewalld
  • 重启防火墙:firewall-cmd --reload
  • 查看开放的端口:firewall-cmd --list-ports
  • 开放端口:firewall-cmd --zone=public --add-port=8080/tcp --permanent
  • 关闭端口:firewall-cmd --zone=public --remove-port=8080/tcp --permanent

ps:开放or关闭端口后,需要重启防火墙方可生效。

定时任务

安装

一般情况,linux的定时任务crontab命令是随系统安装的,如果真的没有,可以用以下命令安装。

  1. yum install crontabs

常用命令

  • 查看已有定时任务:crontab -l
  • 编辑定时任务
    • 执行crontab –e
    • 相当于vi /var/spool/cron/root
    • 如果出现这个文件不存在的情况,直接新建就可以了。
  • 删除所有定时任务:crontab –r
  • 查看执行日志:tail -f /var/log/cron

语法规则

crontab文件的含义:用户所建立的crontab文件中,每一行都代表一项任务,每行的每个字段代表一项设置,它的格式共分为六个字段,前五段是时间设定段,第六段是要执行的命令段,格式如下:
minute hour day month week command 顺序:分 时 日 月 周

  • minute: 表示分钟,可以是从0到59之间的任何整数。
  • hour:表示小时,可以是从0到23之间的任何整数。
  • day:表示日期,可以是从1到31之间的任何整数。
  • month:表示月份,可以是从1到12之间的任何整数。
  • week:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。
  • command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。

在以上各个字段中,还可以使用以下特殊字符:

  • 星号(*):代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。
  • 逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”
  • 中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”
  • 正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次。

示例

  1. 0 0 1 * * docker image prune -a

计算Crontab命令执行时间的网站:https://tool.lu/crontab/

ECS数据盘挂载与卸载

挂载

  1. 查看磁盘确认磁盘是否存在:fdisk -llsblk( 例如我看到数据盘的名字是/dev/vdb
  2. 格式化数据盘:mkfs -t xfs -c /dev/vdb或者mkfs.xfs /dev/vdb
  3. 新建挂载的目标文件夹:mkdir /data
  4. 建立挂载:mount /dev/vdb /data
  5. 查看结果df -h,看下是否有类似/dev/vdb 100G 33M 100G 1% /data的挂载信息
  6. 加入开机启动

  7. 执行chmod +x /etc/rc.d/rc.local
    2. 编辑配置文件:vim /etc/rc.d/rc.local
    3. 在最后一行输入:mount /dev/vdb /data
    4. :wq保存退出

卸载

  1. 备份原先数据盘的数据到系统盘:cp -r /data/ /databak
  2. 卸载目录:umount /data
    • 如果提示“设备忙,无法挂载”,则输入fuser -km /dev/xvdb1后再继续
  3. 修改开机启动的配置文件
    1. 执行chmod +x /etc/rc.d/rc.local
    2. 编辑配置文件:vim /etc/rc.d/rc.local
    3. 删除掉之前写的:mount /dev/vdb /data
    4. :wq保存退出
  4. 此时/data目录下数据就被清空了,可以删除了它:rm -rf /data
  5. 然后把之前备份的数据放回去:mv /databak /data
  6. 完成

下载器问题

  • yum无法下载
    • 添加源yum install -y epel-release
  • apt-get无法下载
    • 执行更新apt-get update