分类 Linux 下的文章

用户管理

/etc/passwd,/etc/shadow,/etc/group

id

显示用户id及所属群组的id

0:root

1-999:系统用户

1000+普通用户

useradd

useradd name
-g为添加的用户指定相应的用户组
-d path 为新添加的用户指定home目录
-u 指定用户id

当创建用户user时出现Creating mailbox file: File exists,直接删除/var/spool/mail/ 和/home/user

usermod

修改用户账号

-d path更改登录的目录,/sbin/nologin会让这个用户不能登录
-u id 修改用户的uid

userdel

删除用户账号
-r删除登入目录

passwd

更改使用者的密码

组管理

用户和组对应的关系在/etc/group

组的配置文件 /etc/login.defs

groupadd

--g 指定组id
--r 创建系统工作组,组id小于500
--k 覆盖配置文件/etc/login.defs

avatar

groupmod

-n 改名
-g 允许使用重复gid
-n 将组id改为gid

avatar

groupdel

删除组

gpassword

管理组成员

-a 添加用户到组
-d 删除用户
[root@localhost ~]# useradd xiaoming
[root@localhost ~]# id xiaoming
uid=8849(xiaoming) gid=8849(xiaoming) groups=8849(xiaoming)
[root@localhost ~]# groupadd -g 114514 xiabeize
[root@localhost ~]# tail -n 1 /etc/group
xiabeize:x:114514:
[root@localhost ~]# gpasswd -a xiaoming xiabeize
Adding user xiaoming to group xiabeize
[root@localhost ~]# tail -n 1 /etc/group
xiabeize:x:114514:xiaoming
[root@localhost ~]# id xiaoming
uid=8849(xiaoming) gid=8849(xiaoming) groups=8849(xiaoming),114514(xiabeize)

练习

[root@localhost ~]# useradd -u 8888 lisi
[root@localhost ~]# groupadd -g 9999 test
[root@localhost ~]# gpasswd -a lisi test
Adding user lisi to group test
[root@localhost ~]# tail -n 1 /etc/group
test:x:9999:lisi
[root@localhost ~]# groupdel test
[root@localhost ~]# tail -n 1 /etc/group
lisi:x:8888:
[root@localhost ~]# id lisi
uid=8888(lisi) gid=8888(lisi) groups=8888(lisi)
[root@localhost ~]# userdel -r lisi
[root@localhost ~]# id lisi
id: lisi: no such user

将Linux主机接入网络需要配置:

  1. ip/netmask
  2. 默认网关
  3. dns服务器

静态指定

ifcfg:ifconfig\route\netstat

ip:ip\link\route\ss

修改/etc/sysyconfig/network-script/

centos7:nmcli

ifconfig(net-tools)

ifconfig -a:查看所有网络接口的配置信息

ifconfig 接口 [up|down]:启用或关闭网络接口
ifconfig ens33 down

ifconfig 接口 x.x.x.x/24 [up]
/ifconfig 接口 x.x.x.x. netmask x.x.x.x :配置ip地址

ifconfig ens33 192.168.226.111/24 up

混杂模式:抓取所有经过的报文,即使该报文不是发给该接口的

ifconfig 接口 promisc(开启)-promisc(关闭)

route

查看内核路由表信息

[root@localhost ~]# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         gateway         0.0.0.0         UG    100    0        0 ens33
192.168.226.0   0.0.0.0         255.255.255.0   U     100    0        0 ens33
192.168.226.0   0.0.0.0         255.255.255.0   U     100    0        0 ens33
目的地          网关            子网掩码        标志位  度量值             接口

度量值:
U:启用状态
G:默认网关
H:主机路由

0.0.0.0表示任何地方

添加路由

route add/del [-net] [-host] [netmask] [gw] [dev]

-net:表示后面接的路由为一个网域

-host:表示后面接的为连接到单部主机的路由

netmask:子网掩码

gw:网关

dev:指定由哪一块网卡连线出去

主机路由
route add -host 192.168.1.1 gw 192.168.88.8 dev ens33
网络路由
route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.226.8 dev ens33
默认路由
route add -net 0.0.0.0 netmask 0.0.0.0 gw 192.168.1.1
删除
route del .........

dns服务器指定

/etc/resolv.conf

[root@localhost ~]# cat /etc/resolv.conf
# Generated by NetworkManager
search localdomain
nameserver 192.168.226.2
nameserver 114.114.114.114

dns解析工具yum install -y bind-utils

nslookup

[root@localhost ~]# nslookup
> baidu.com
Server:        192.168.226.2
Address:    192.168.226.2#53

其他用法和其他工具

netstat

netstat命令:查看网络连接状态

网络连接 路由表信息 接口统计 伪装连接 组播成员关系

常用参数:

-t : 显示tcp协议相关
-u :显示udp协议相关 
-w :显示raw socket相关(混在模式收到的相关数据包)
-l :显示处于Listen状态连接
-a :显示所有状态的连接
-n :以数字显示IP地址和端口号
-p :显示相关进程及PID 
-e :扩展格式显示

netstat -tnap

显示路由表:
netstat -r:显示内核路由表
netstat -n 数字格式(不反向解析

显示接口的统计数据

显示所有接口:netstat -i

显示指定接口:netstat -I接口

ifup/ifdown开关接口

ip

ip link:网络设备配置

ip link set [interface]

[up|down]  激活或禁用指定端口
multicast [on| off]  开启或关闭接口组播功能
name <N_name>  重名命接口
mtu <M_value>  设置MTU值
netns [PID|Name]  将接口移至指定的命名空间中

ip link show 显示所有接口信息

ip link show 显示指定接口信息

ip link show up 仅显示处于up状态的接口

ip address: 协议地址管理

ip address show 查看所有设备IP地址信息

dev <interface> 查看指定设备的IP地址信息
label <interface:>  查看指定设备的标签
dev <interface> primary 查看指定设备主IP 

ip address [add | del] IPADRESS dev

ip address add x.x.x.x/x dev ens32 [broadcase x.x.x.x  | label ens32:1]   配置IP地址 
ip address add x.x.x.x/x dev ens32 scope [global|link|host]  指定作用域
    global 全局可用
    link 仅链接可用(同一广播域通信)
    host 本机可用(只能跟自己通信)

ip address flush dev 清空指定设备的所有IP地址

ip route:网络路由配置

ip route add

x.x.x.x/x via x.x.x.x dev <interface>  网络路由
x.x.x.x via x.x.x.x dev <interface> 主机路由 
default x.x.x.x/x via x.x.x.x dev <interface>  默认路由 
    src x.x.x.x  添加路由时可以指定源IP地址

ip route change|replace x.x.x.x/x via x.x.x.x

dev 修改路由信息

ip route delete x.x.x.x/x 删除指定路由

ip route show 查看路由信息

ip route get x.x.x.x/x 查看指定路由相信信息

ip route flush 清空所有路由

ip route flush x.x.x.x 清空指定路由

ss

ss命令: 显现socket连接状态

常用参数:

-t: tcp 
-u: udp 
-w:raw socket 
-x: unix socket 
-l: Listen
-a: all 
-n: number形式
-p: Pid 
-m: memory 
-o: timer
-e: 扩展格式 



网络配置文件

`[root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp dhcp\none\static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=7b792800-d238-47ec-bfd8-ccb55d6cd1b1
DEVICE=ens33
ONBOOT=yes 开机自启

将其修改成静态

添加
IPADDR0=192.168.226.100
NETMASK0=255.255.255.0
GATEWAY0=192.168.226.2 自己的主机一般是1,虚拟机一般是2
DNS1=114.114.114.114

重启网络服务
systemctl restart network


# 修改当前主机的主机名:

  hostname [HOSTNAME] 临时修改 

hostnamectl set-hostname <Hostname> 永久修改

配置文件:/etc/sysconfig/network :HOSTNAME=New_Name

主机名解析:/etc/hosts

systemd用于启动守护进程,是系统的第一个进程,PID为1

systemctl

systemctl command name.service

常用命令
启动:start
停止:stop
重启:restart
状态:status
重载或重启:reload-or-restart
条件式重启:try-restart
禁止设定为开机自启:mask
取消禁止开机自启:unmask
自启:enable
禁止:disable
查看是否激活:is-active
查看已经激活的服务list-units --type service
查看所有服务开机自启状态:list-unit-files --type service

切换至紧急救援模式:rescue

切换至emergency模式:emergency

chkconfig

查看是否开机启动chkconfig --list name
设定服务自启动:chkconfig name on
禁止:chkconfig name off
查看所有服务开机自启状态chkconfig --list

其他systemd命令

Linux进程管理

进程优先级PRI:越接近100优先级越高,低于一百为实时优先级,高于为静态优先级

静态优先级内核不会主动修改,只能通过系统调用nice去修改

实时优先级只对实时进程有效

Nice值NI:(-20,19)值越低表示优先级越高,一般情况下子进程会继承父进程的nice值

各值详细解释

进程类型:

守护进程:系统引导过程中启动的进程,与终端无关

前台进程:跟终端有关,通过终端启动的进程

进程状态:

运行态:running

就绪态:ready

睡眠态:interruptable(可中断)
/uninterruptable(不可中断)

停止态:stopped暂停与内存,但不会被调度

僵死态:zombie

**Linux系统各进程的相关信息均保存在/proc/PID目录下的各文件中

进程管理工具

pstree

ps

常用组合: aux\ef

aux:

u:以用户为中心组织进程状态关系显示

a:与终端相关的进程

x:与终端无关的进程

[root@localhost ~]# ps -aux
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
用户 进程ID CPU占用 内存占用 
VSZ:Virtual memory SiZe 虚拟内存集 
RSS:ReSident Size 常驻内存集———其他的都可以放入交换内存中
STAT:进程状态 
R:running 
S:interruptable sleeping 
D:uninterruptable sleeping 
T:stopped 
Z:zombie 
+:前台进程 
l:多线程进程 
N:低优先级进程 
<:高优先级进程 
s:session leader 
START:启动时间 
TIME:运行占据cpu的累积时长 COMMAND:由哪个命令来启动的相关进程

ef
:
e:显示所有进程

f:显示完整格式程序信息

top

top -hv | -bcHiOSs -d secs -n max -u|U user -p pid(s) -o field -w [cols]

-d:每隔几秒刷新一次,默认3s

-p指定特定的pid进程观察

top按键

?:输出可用命令

排序

P:以CPU使用资源进行排序

M:以内存使用资源排序

T:累积占据CPU时长

首部信息

uptime信息:l命令

task及cpu信息:t命令

cpu分别显示:1(数字)

memory信息:m命令

退出命令:q

修改刷新时间间隔:s

终止指定进程:k
T0CJ~I1ZB8Q{X~B66MS8([6.png

htop彩色版
![TR0J3VJ4D6FL)(CHZ]Y%21D.png][2]

kill

-l:显示可用信号

kill [-sign] PID

killall [-sign] program 终止名称下所有进程

常用信号

SIGHUP:无需关闭进程而让其重读配置文件 1

SIGINT:自动捕捉ctrl+c信号来种植正在运行的进程 2

SIGKILL:杀死进程 9

SIGTERM:终止进程 15 可以被阻塞、忽略、处理

nice/renice

进程优先级调整,进程默认启动时nice为0,优先级为120

Linux计划任务

at

at -f time job

time :

HH:MM[YY-mm-dd]

moon,midnight,tommorrow,now + #[min,hours,seconds]

例子

at now +1 minutes -f test1.txt

atq查看当前的任务队列

crond定时任务

Linux上非常多的计划任务使用crond方式,crond服务开机自启,用户可以用crontab来自定义计划

注意,使用date查看自己系统当前的时间是否一致,如不一致,可以使用date -s 进行修改,修改后使用clock -w保存

/etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed
分钟 小时 日 月 星期 用户 任务


使用*表示“每”

1: root用户在每天晚上9.30执行指定任务
30 21 * * * root echo "hello"

2:root用户在每周一周五晚上8点执行执行任务

0 20 * * mon,fri root echo "hello"

3:zhangsan用户在每个月1-9晚上8点执行任务

0 20 1-9 * * zhangsan echo "到点了"

使用/#表示指定步长

* */3 * * * zhangsan echo.sh         # 每3小时执行一次
crontab -e 创建新的计划
-r 移除任务
-l 列出任务列表
-u 指定执行用户


只保留7天内的日志(使用计划任务在每天0点删除7天前的日志即可)
* * * * * find /var/log/java/*.log -atime 7 -delete | -exec rm -rf {}\;

-exec rm -rf {} + 用于对搜索到的文件执行相应的操作,其中{}表示搜索到的文件路径。{}后面可以接空格加号或空格反斜线分号。

备份: 备份指定数据/mydata/
10 0 * * * tar -czxf /backup/mydata.zip.tar /mydata/