Linux的一些个人记录
前言
记录一下日常接触到以及学习到的一些关于Linux的知识
网络
常见的Linux发行版的网卡配置文件存放位置:
1、Ubuntu / Debian:
1 |
|
Ubuntu 18.0.4开始,Ubuntu和Debian移除了以前的ifup/ifdown
命令和**/etc/network/interfaces配置文件,转而使用ip link set
或者/etc/netplan/01-netcfg.yaml**模板和sudo netplan apply
命令实现网络管理。
1 |
|
2、CentOS / RHEL 7及更早版本:
1 |
|
3、CentOS / RHEL 8及更新版本:
1 |
|
4、Fedora:
1 |
|
5、Arch Linux:
1 |
|
Linux虚拟机添加网卡却找不到网卡配置文件
1.使用vmware给虚拟机额外增加一个新的网卡时,在虚拟机使用ip addr查看,多了一个ens224网卡信息,但是在配置目录**/etc/sysconfig/network-scripts**里没有发现对应的ens224配置文件
2.查看网卡配置信息
1 |
|
trick:centos系统如果报错提示:NetworkManager is not running,意思是NetworkManager未在运行,NetworkManager是Linux系统上管理网络设置的守护进程,负责自动处理和配置网络连接,未运行可能会导致网络连接问题,解决方法是:
1.启动NetworkManager服务命令
1sudo systemctl start NetworkManager
设置服务开机自启
1
sudo systemctl enable NetworkManager
2、如果服务已经启动但仍然出现问题,尝试重新启动服务,命令:
1sudo systemctl restart NetworkManager
3、检查NetworkManager状态,确认服务正在运行,命令:
1sudo systemctl status NetworkManager
4、如果服务无法启动,检查日志以诊断问题,命令:
1journalctl -u NetworkManager
3.生成网卡信息
1 |
|
会自动生成一个ifcfg-ens224配置文件
查看网卡配置文件,发现已经有了
1 |
|
4.修改网卡配置
1 |
|
5.重启网络
1 |
|
配置完成。
防火墙
1.centos/Fedora?RHEL使用firewalld防火墙:
1
2
systemctl stop firewalld #暂时关闭
systemctl disable firewalld #禁止开机启动2.Ubuntu/Debian使用ufw防火墙:
1
2
ufw disable # 暂时关闭
systemctl disable ufw #禁止开机启动3.SUSE使用SuSEfirewall2防火墙:
1
2
systemctl stop SuSEfirewall2 #暂时关闭
systemctl disable SuSEfirewall2 #禁止开机启动
要想临时关闭防火墙,取决于使用的是那个防火墙服务,例如:
1.iptables(基于轮询的防火墙)
1
2
service iptables stop 或者 systemctl stop iptables #临时关闭
编辑 /etc/sysctl.conf,注释掉net.ipv4.ip_forward=1,然后重启系统 #永久关闭2.ufw(简单易用的图形界面工具)
1
2
ufw disable #临时关闭
删除/etc/ufw/ufw.conf,然后重启ufw服务 ufw restart && ufw reload #永久关闭3.firewall(动态防火墙):
1
2
firewall-offline-cmd stop #临时关闭
systemctl stop firewalld并设置为不自动启动 systemctl disable firewalld #永久关闭
使用firewall-cmd开放指定端口的命令
1 |
|
常用命令
查找
当前目录下查找带有”password”的php文件
1 |
|
查看时区
1 |
|
查看linux内核版本
1 |
|
查看linux发行版本
1 |
|
套件管理命令
1 |
|
查看命令
1 |
|
linux查看有哪些服务
1 |
|
linux查看一个服务的安装路径
1.ps -u 系统用户名
2.进入linux的进程目录**/proc**,执行ls -l ,可以看到对应的进程目录,结果如下图所示
3.进入30058这个进程目录,执行 ls -l, 结果如下:
压缩命令
1.压缩当前目录下文件夹/文件test到test.tar.gz:
1 |
|
2.解压缩当前目录下的file.tar.gz到file:
1 |
|
查看Linux 系统启动时自动执行的脚本文件
/etc/rc.local 是传统的系统初始化脚本
临时关闭SELinux和永久关闭的方法(有可能影响服务)
1 |
|
账户管理
1 |
|
文件权限
1 |
|
进程监控PS
1 |
|
Linux上进程有5种状态:
- 运行 (正在运行或在运行队列中等待)
- 中断 (休眠中, 受阻, 在等待某个条件的形成或接受到信号)
- 不可中断 (收到信号不唤醒和不可运行, 进程必须等待直到有中断发生)
- 僵死 (进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放)
- 停止 (进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行运行)
ps aux
输出格式:
1 |
|
格式说明:
USER
: 行程拥有者
1
PID: pid
%CPU
: 占用的 CPU 使用率
%MEM
: 占用的记忆体使用率
VSZ
: 占用的虚拟记忆体大小
RSS
: 占用的记忆体大小
TTY
: 终端的次要装置号码 (minor device number of tty)
STAT
: 该行程的状态,linux
的进程有5种状态:
- D 不可中断
uninterruptible
sleep (usually IO)- R 运行 runnable (on run queue)
- S 中断 sleeping
- T 停止 traced or stopped
- Z 僵死 a defunct (”zombie”) process
注: 其它状态还包括W(无驻留页), <(高优先级进程), N(低优先级进程), L(内存锁页)
START: 行程开始时间
TIME: 执行的时间
COMMAND:所执行的指令
ssh连接
SSH连接需要处理的几个问题:
1.网络问题,需要修改网卡信息;
2.防火墙,需要关闭或开放端口;
3./etc/hosts.deny被设置了黑名单,在**/et/hosts.allow中修改,追加sshd:xx.xx.xx.xx:allow或者将sshd:x.x.x.x:deny注释一行,或者注释所有规则并添加sshd:all:allow**;
4.开启SSH服务,修改/etc/ssh/sshd_config配置文件下的PasswordAuthentication和PermitRootLogin均为yes
SSH连接时出现Connection refused情况
ssh: connect to host x.x.x.x port 22: Connection refused,通常是由于22端口未打开、ssh服务未开启或防火墙禁止22端口等原因引起
1
2
systemctl status sshd #查看ssh服务是否启动,如果未启动就把它打开
netstat -lntp #查看端口是否打开如果是防火墙未放行ssh,可以关闭防火墙或者放行端口,以Iptables为例子
1
2
3iptables -L
iptables -l INPUT -p tcp --dport 22 -j ACCEPT
service iptables restart或systemctl restart iptables
SSH连接时出现Host key verification failed
解决方法:
【1】更改安全,选择最低的安全级别,再**.ssh/config或者/etc/ssh/ssh_config**中配置
1 |
|
【2】删除对应ip的再know_hosts相关信息
【3】直接删除known_hosts文件
FinalShell 连接出现 chanel is not opened解决方案
通过添加 -v 参数(ssh -v root@172.17.1.61 很重要的思路),发现到SSH2_MSG_SERVICE_ACCEPT一行时会停留很久
1、由于GSSAPI认证导致的,修改**/etc/ssh/sshd_config**,将对应行修改成:
1GSSAPIAuthentication no
服务器端启用了GSSAPI。登陆的时候客户端需要对服务器端的IP地址进行反解析,如果服务器的IP地址没有配置PTR记录,那么就容易在这里卡住了。
2、由于DNS解析导致的,还是修改**/etc/ssh/sshd_config**(我的问题出在这):
1UseDNS no
我们在连接 OpenSSH服务器的时候假如 UseDNS选项是打开的话,服务器会先根据客户端的 IP地址进行 DNS PTR反向查询出客户端的主机名,然后根据查询出的客户端主机名进行DNS正向A记录查询,并验证是否与原始 IP地址一致,通过此种措施来防止客户端欺骗(说到底还是反向查询的问题)。
3、修改**/etc/nsswitch.conf**,将“hosts:”一行改成:
1hosts: files dns
4、修改目标主机的**/etc/hosts**文件,将本地主机的IP和Hostname添加进去
5.systemd-logind 这个服务有问题,需要重启一下:
1systemctl restart systemd-logind
计划任务
都是以当前用户的权限去执行计划任务
at一次性计划任务
需要开启atd服务(需要root权限)
1 |
|
at的运行方式
事实上我们仅使用at命令来生成所要运行的工作,并将这个工作以文本文件的方式写入/var/spool/at目录内
该工作就可以被atd
服务取用并执行,at的实际工作情况是这样的:
1:先查找
/etc/at.allow
文件,写在这个文件中的用户才可以使用at,没有在at.allow
文件中的用户就不可以使用,即使at.deny
中也没有2:如果
at.allow
不存在,就查找/etc/at.deny
,写在这个文件中的用户都不能使用at,而其他用户都可以使用at3:如果两个文件都不存在,那么就只有root用户可以执行at
选项参数:
1 |
|
crontab 周期性计划任务
user权限不能查看 www-data 权限的任务
1 |
|
前面5个字段分别表示分钟,小时,日期,月份,周,后面接的是命令
代表意义 | 分钟 | 小时 | 日期 | 月份 | 周 | 命令 |
---|---|---|---|---|---|---|
数字范围 | 0-59 | 0-23 | 0-31 | 0-12 | 0-7 | 要执行的命令 |
其中周里面的0和7都代表周日,注意周与日月不可并存
特殊字符:
特殊字符 | 代表意义 |
---|---|
*(星号) | 任意时刻,如0 12 * * * sh shell.sh 的*代表每个月的每个周中的每一天 |
,(逗号) | 代表分割时段,例如0 3,6 * * * command,表示在3点和6点时执行任务,注意不要有空格符 |
-(减号) | 代表时间段范围,例如在凌晨1点到6点的30分的时候执行command命令则应该是 30 1-6 * * * command |
/n | 表示每隔n个单位间隔执行一次的意思,*/11-23 * * * command表示凌晨1到晚上23点时间段内每隔1分钟执行一次 |
进程监控PS
1 |
|
Linux上进程有5种状态:
- 运行 (正在运行或在运行队列中等待)
- 中断 (休眠中, 受阻, 在等待某个条件的形成或接受到信号)
- 不可中断 (收到信号不唤醒和不可运行, 进程必须等待直到有中断发生)
- 僵死 (进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放)
- 停止 (进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行运行)
ps aux
输出格式:
1 |
|
格式说明:
USER
: 行程拥有者
1
PID: pid
%CPU
: 占用的 CPU 使用率
%MEM
: 占用的记忆体使用率
VSZ
: 占用的虚拟记忆体大小
RSS
: 占用的记忆体大小
TTY
: 终端的次要装置号码 (minor device number of tty)
STAT
: 该行程的状态,linux
的进程有5种状态:
- D 不可中断
uninterruptible
sleep (usually IO)- R 运行 runnable (on run queue)
- S 中断 sleeping
- T 停止 traced or stopped
- Z 僵死 a defunct (”zombie”) process
注: 其它状态还包括W(无驻留页), <(高优先级进程), N(低优先级进程), L(内存锁页)
START: 行程开始时间
TIME: 执行的时间
COMMAND:所执行的指令
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!