系统
- 关机:
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访问权限:
vim /etc/ssh/sshd_config
- 找到
AllowUsers
- 在后面添加用户名
- 重启ssh服务
- 重启ssh服务:
service sshd restart
(有的是service ssh restart
)
修改主机名称
- 设置名称:hostnamectl set-hostname
- 立即生效:bash
效果如下:
[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
文件权限
查看权限
- 通过
ll
或ls -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
- 使用root执行
yum install sudo
- 使用root执行
visudo
,找到root ALL=(ALL) ALL
,在下面输入[userName] ALL=(ALL) ALL
,保存退出 - 上面指定的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命令是随系统安装的,如果真的没有,可以用以下命令安装。
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字段,表示每十分钟执行一次。
示例
0 0 1 * * docker image prune -a
计算Crontab命令执行时间的网站:https://tool.lu/crontab/
ECS数据盘挂载与卸载
挂载
- 查看磁盘确认磁盘是否存在:
fdisk -l
或lsblk
( 例如我看到数据盘的名字是/dev/vdb
) - 格式化数据盘:
mkfs -t xfs -c /dev/vdb
或者mkfs.xfs /dev/vdb
- 新建挂载的目标文件夹:
mkdir /data
- 建立挂载:
mount /dev/vdb /data
- 查看结果
df -h
,看下是否有类似/dev/vdb 100G 33M 100G 1% /data
的挂载信息 加入开机启动
执行
chmod +x /etc/rc.d/rc.local
2. 编辑配置文件:vim /etc/rc.d/rc.local
3. 在最后一行输入:mount /dev/vdb /data
4.:wq
保存退出
卸载
- 备份原先数据盘的数据到系统盘:
cp -r /data/ /databak
- 卸载目录:
umount /data
- 如果提示“设备忙,无法挂载”,则输入
fuser -km /dev/xvdb1
后再继续
- 如果提示“设备忙,无法挂载”,则输入
- 修改开机启动的配置文件
- 执行
chmod +x /etc/rc.d/rc.local
- 编辑配置文件:
vim /etc/rc.d/rc.local
- 删除掉之前写的:
mount /dev/vdb /data
:wq
保存退出
- 执行
- 此时/data目录下数据就被清空了,可以删除了它:
rm -rf /data
- 然后把之前备份的数据放回去:
mv /databak /data
- 完成
下载器问题
- yum无法下载
- 添加源
yum install -y epel-release
- 添加源
- apt-get无法下载
- 执行更新
apt-get update
- 执行更新