1.创建普通用户
创建普通用户
useradd username 添加用户
passwd username 为添加的用户添加密码
userdel 删除用户
passwd +用户名 (修改 用户密码)
finger + 用户名 显示用户状态 需要安装(yum install finger)
id 显示当前用户的 状态
2.查看 当前系统支持的 shell
cat /etc/shells
echo $0 打印的是当前运行的shell名
bash --version 查看bash的版本信息
3.修改ssh 配置文件
vi /etc/ssh/sshd_config
ls命令
ls 显示当前目录下非隐藏文件与目录
ls -lh 可以在列出文件的同时查看文件的大小
ls -l 相当于(ll)
-rw 是普通文件
d d是文件夹
cd命令
cd 切换目录
cd - 回到上一次操作的目录
. 代表本目录
.. 代表上一个目录
-代表前一个工作目录
~
cd ~ 到普通用户的家目录
cd /root 到家目录
pwd 可以显示当前路径
mkdir创建文件
创建一个目录
midir test
连续创建多个目录
mkdir -p /123/456/789
rmdir 删除一个目录(只能删除空目录)
touch 创建文件
touch 1.txt
vim 创建文件
vim 2.txt
echo 创建文件
echo hello>3.txt ( > 输出定向)(会自动创建3.txt)
rm -rf(递归 强制删除) rm -rf / 强制删除根目录
cp拷贝文件scp远程拷贝文件
cp 1.txt /var/www/ 将1.txt 拷贝到 /var/www/目录下
cp /var/www/1.txt ./2.txt
cp -r 123/ /tmp/aaa 拷贝123 目录下的所有东西
cp .log ( 匹配所有)可以拷贝所有以 .log 结尾的文件
scp
scp 1.txt [email protected]:/tmp/ 远程拷贝文件
scp -r 远程拷贝文件夹
UID GID
/etc/passwd
GID 为GroupId,即组ID,用来标识用户组的唯一标识符
UID 为UserId,即用户ID,用来标识每个用户的唯一标示符
UID = 0 GID = 0 (ROOT 用户) 可以用root 用户权限 修改普通用户的UID = 0
(1-499) 系统用户预留的 GID
(500 - 65535) 普通用户可以分配到的GID
每个字段具体含义讲解
用户名(如第一行中的root就是用户名),代表用户账号的字符串。存放的就是该账号的口令,在这里只用一个 ‘x’ 代替,早期的unix系统口令确实是存放在这里,但基于安全因素,后来就将其存放到 ‘/etc/shadow’ 中了。代表用户标识号,也叫做uid。0就是root,通常uid的取值范围是0~65535(但实际上已经可以支持到4294967294),0是超级用户(root)的标识号,1~499由系统保留,普通用户的标识号大于等于500。表示组标识号,也叫做gid。这个字段对应着/etc/group 中的一条记录,其实/etc/group和/etc/passwd基本上类似注释说明,该字段没有实际意义,通常记录该用户的一些属性,例如姓名、电话、地址等等。用户的家目录,当用户登录时就处在这个目录下。root的家目录是/root,普通用户的家目录则为/home/username,这个字段是可以自定义的。shell,用户登录后要启动一个进程,作用是用来将用户下达的指令传给内核。而Redhat/CentOS的shell是bash,默认的路径为/bin/bash,如果您想建立一个账号不让他登录,那么就可以把该字段改成/sbin/nologin。
/etc/shadow
用户名,跟/etc/passwd对应。加密密码,加密算法升级为SHA512散列加密算法,如果密码位为“!!”或“*”代表没有密码,不能登录,其shell为/sbin/nologin。密码最后一次修改的时间,以1970年1月1日作为标准时间,每过一天时间戳加1两次密码修改的间隔时间,要过多少天才可以更改密码,默认是0,即不限制密码的有效期,密码多少天后到期,默认为99999。若设置成20,即20天后到期,必须修改密码,不然登录不了系统。密码到期前的警告期限,若设置为6,即到期前6天将通知用户。账号失效宽限期(和第5字段相对比)。若设置为2,到期过后2天后再不修改密码,用户锁定。账号的生命周期(要用时间戳表示),到了指定的期限,账号将失效。保留字段,没有特别意义
su
(root) 切换到root 用户( 不能切换到root 的环境变量下 还是在普通用户的环境变量下)
su - (root) 切换到root 的环境变量下
sudo (临时赋予普通用户root 权限)
用户状态
W 查看当前用户数量
lastlog 查看每个账号的最近登陆时间
write 可以在不同终端和用户之间传递信息 (终端之间可以发信息)
write +用户 +终端
mesg命令
用于设置当前终端的写权限,即是否让其他用户向本终端发信息。将mesg设置y时,其他 用户可利用write命令将信息直接显示在您的屏幕上。
mesg y #允许系统用户将信息直接显示在你的屏幕上
mesg n #不允许系统用户将信息直接显示在你的屏幕上
vim编辑器
:q
:wq
:q! 不保存并退出
:w 保存
:w other.txt (另存为)
:w! 强行保存
对文本内容进行操作
1 行间跳转
nG 跳转至第n行(10G跳转到第十行)
gg 跳到第一行
G 跳转到最后一行
2 行内跳转
0:绝对行首
^: 行首的第一个非空白字符
$: 绝对行尾
3.删除操作
x :删除光标所在处的单个单词
删除多个单词
nx :删除
10x : 删除十个单词
dd :会把光标所在的哪一行删除
10dd : 删除十行
多行删除操作, 多行删除通过行号来删除。
1.vim 打开文件,使用 “ : set nu ” 来显示行号
- 输入想要删除的行号进行删除 “ : 10004, 10006d ” 回车删除
:> 清空
:>passwd.bak (清空passwd.bak)
echo "">passwd.bak (清空passwd.bak)
查找 /单词
按 n 查找下一个
按N 查找上一个
多行注释
- 首先使用 Ctrl+V进入块编辑模式
- 在行首通过 ↑↓ 按键来选择需要注释的行
- 选择完成输入大写的 i ( I ) 进入编辑模式
- 输入注释符 #
- 按Esc退出块编辑,完成
取消多行注释的方法为:
- 在行首,输入ctrl+V进入块编辑模式
- 通过 ↑↓ 键控制取消注释的行
- 通过d 或者 x来删除一个字符 #
- 完成。
复制 粘贴
p :粘贴
y: 复制
yy : 复制一行
yy 10p 复制一次 粘贴十次
u: 撤销
nu (10u 撤销十次)
显示行号或取消显示行号
(:set nu)
(:set nonu)
显示忽略或区分字符大小写
(:set ic)
(:set noic)
基本替换)
(:s/str1/str2/ 替换当前行第一个str1为str2
:s/str1/str2/g 替换当前行所有str1为str2
:n,\$s/str1/str2/ 替换第 n 行开始到最后一行中每一行的 第一个 str1为str2
:n,\$s/str1/str2/g 替换第 n 行开始到最后一行中每一行 所有 str1为str2
(n 为数字,若 n 为 .,表示从当前行开始到最后一行)
:%s/str1/str2/(等同于 :g/str1/s//str2/) 替换每一行的 第一个str1为str2
:%s/str1/str2/g(等同于 :g/str1/s//str2/g) 替换每一行中 所有str1为str2
2. 可以使用#作为分隔符,此时中间出现的 / 不会作为分隔符
:s#str1/#str2/# 替换当前行第一个str1/ 为str2/
:%s+/str11/str12/+/str21/str22+ (使用+ 来 替换 / ): /str11/str12/替换成/str21 /str22/
要将 50 到 100 行之间的 man 改为 MAN,并且一个一个挑选是否需要修改,如何 下达指令?
:50,100s/man/MAN/gc)
(50,100s/man/MAN/g)不一个一个挑选
cat 查看文件内容
cat + filename (一次性显示整个文件)
cat > filename (从键盘创建一个文件,只能创建新文件,不能编辑已有文件)
cat file1 file2 > file (将几个文件合并为一个文件)
cat -n + filename (由 1 开始对所有输出的行数编号)
cat -b + filename (和 -n 相似,只不过对于空白行不编号)
cat -T show-tabs将 TAB 字符显示为 ^I
-E 或 --show-ends : 在每行结束处显示 $
cat -A show-all显示换行 (linux 和Windows 换行符不一样)
重定向 >
echo "hello" >1.txt
> 覆盖
cat 1.txt > paswd
>> 追加到文件末尾
cat 1.txt >> passwd
:>1.txt 清空文件
more 根据窗口的大小进行分页显示,然后还能提示文件的百分比;
more /etc/profile
more -dc 显示提示
more +4 从第四行开始显示
more -4 每屏显示四行
head 显示一个文件的内容的前多少行;
head -n 5 文件前五行
tail 显示一个文件的内容的最后多少行
tail -n 文件后五行
tail -f 查看日志时使用(参数 " -f ",使用此参数时,tail 不会回传结束信号,除非我们去自行去中断它)
此时要想暂停刷新,使用ctrl+s暂停终端。
若想继续终端,使用ctrl+q
若想退出tail命令,直接使用ctrl+c
tail -f /var/log/dracut.log
grep 匹配文件中的词
cat 1.txt | grep test (匹配文本中所用的 test )
cat 1.txt | grep -w "test" 匹配 单独的单词
grep -c "all" 1.txt 统计出现"all" 的行数
grep "all" 1.txt 2.txt 4.txt 匹配多个文件中出现的 "all"
grep -l "all" 1.txt 2.txt 4.txt (-l 不区分大 小写只适用于单字符)
cat 1.txt | grep -i "ALL" (-i) 忽略大小写
PS是LINUX下最常用的也是非常强大的进程查看命令
ps命令将某个进程显示出来
grep命令是查找
中间的|是管道命令 是指ps命令与grep同时执行
检查java 进程是否存在:ps -ef |grep java
ps -ef | grep ssh
ps -ef | grep ssh | grep -v grep (-v 取反参数)
seq 用于产生从某个数到另外一个数之间的所有整数
seq 10 = seq 1 10
结果是1 2 3 4 5 6 7 8 9 10
seq 10 | grep "test" -A 5
seq 10 | grep "test" -C 5
seq 10 | grep "test" -B 5
{-A -B -C 后面都跟阿拉伯数字
-A是显示匹配行和它后面的n行。
-B是显示匹配行和它前面的n行。
-C是匹配行和它前后各n行。 }
last命令用了显示用户登录情况,以下是直接显示固定行数的记录:
-a:把从何处登入系统的主机名称或ip地址,显示在最后一行;
-d:将IP地址转换成主机名称;
-f <记录文件>:指定记录文件。
-n <显示列数>或-<显示列数>:设置列出名单的显示列数;
-R:不显示登入系统的主机名称或IP地址;
-x:显示系统关机,重新开机,以及执行等级的改变等信息。
awk 用来匹配列
last -n 5 | awk '{print $1}' 匹配第一列
last -n 5 | awk '{print $1,$3}' 匹配第一三列
cat ss.txt | grep "3306" -B 13 | grep "Nmap" | awk '{print $5}'
awk -F ':' 空格'‘{print \$1} -F 用来指定分隔符
如果只是显示/etc/passwd 的账户和账户对应的shell 而账户与shell之间以tab键分割
cat /etc/passwd | awk -F ':' '{print \$1"\t"\$7}'
sed 查找/替换 增加/删除
's/^.*for //g' 把 for 前面的全都替换为 空
cat result.txt | grep "report" | sed 's/^.*for //g'
显示行号 并 删除(不显示) 2到5行(原文件并没有删除 2 到5行)
nl /etc/passwd | sed '2,5d'
nl /etc/passwd | sed '3,$d' 从第三行删除到最后一行
nl /etc/passwd | sed ‘2d’ 只删除第二行
nl /etc/passwd | sed '2a drink tea' a:插入 在第二行后面插入一行
nl /etc/passwd | sed '2i drink tea' 在第二行前面插入一行
nl /etc/passwd | sed ‘2a drink tea\ 一次性多行插入
>233333
>dfsdsggs' 最后加单引号闭合
nl 显示行号
-b :指定行号指定的方式,主要有两种:
-b a :表示不论是否为空行,也同样列出行号(类似 cat -n);
-b t :如果有空行,空的那一行不要列出行号(默认值)
以行为单位的替换与显示
第二行到第五行替换成 No 2-5 number
nl /etc/passwd | sed '2,5c No 2-5 number'
nl /etc/passwd | sed -n '5,7p' 只显示五行到七行
搜索 替换
搜索 /etc/paswd 有 /root 关键字 的行
cat -n test.txt 查看test.txt 全部的行
cat -n test.txt | sed -n '/root/p'
执行 ifconfig 命令
只想要 ifconfig add:后面的ip地址
ifconfig | grep "Bcast" | awk '{print $2}' | awk -F ":" '{print $2}'
ifconfig | grep "inet addr" | sed 's/^.addr://g'
s :代表替换 ^ :匹配行首 $ 匹配行尾
's/^.addr:/(可以为空 也可以写替换的内容)/g'
's/^.addr://g' 把 addr: 前面的任何字符替换为 空
s/^.addr:/fff/g' 把 addr: 前面的任何字符替换为 ff
提取ip
ifconfig | grep "inet addr" | sed 's/^.addr://g' | sed 's/Bcast$:.//g'
任务和进程 管理
ps 查看进程
ps -A (ps -A 只列出所有进程,并不显示环境变量)
ps -ef (ps -ef 列出所有进程,并显示环境变量,而且显示全格式)
ps -ef | grep ssh 查看ssh进程是否开启
ps -u root 查看指定用户启动的进程
UID 用户id PID进程id PPID子进程id
ps -l 目前相关PID 信息显示出来
ps aux 列出目前所有的正在内存当中的程序
ps -aux | more 可以用 | 管道 和more 连接起来分页查看
ps -ef > ps001.txt (可以把显示的内容导入到ps001.txt文件)
top //运维监控利器 (相当于windows 中的任务管理器)
0 zombie 如果不是0 代表有僵尸进程 (长期挂在那不运行的进程
0.0%wa 等待输入输出的cpu 时间百分比
如果出现wa%占用高 I/O 读取出现太慢
kill
用于终止后台进程
kill -l
列出所有信号名称:
kill [-s 信号] -s <信息名称或编号>:指定要送出的信息;
kill -9 1234 (9 强制终止)
查找结束进程
先用ps查找进程,然后用kill杀掉
ps -ef | grep ssh (kail 系统是ssh 服务 centos 系统是 sshd服务)
ps -ef | grep sshd | grep -v "grep"
显示进程信号
ps -ef | grep sshd | grep -v "grep" | awk '{print $2}'
禁止某些用户用xshell连接
kill -9 pid
监控 watch -n 5 五秒查看一次
watch -n 5 ps -ef | grep sshd
磁盘管理和文件
df 用于显示磁盘分区上的可使用的磁盘空间。默认显示单位为KB。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。
df -h (-human-readable:以可读性较高的方式来显示信息)
du命令是对文件和目录磁盘使用的空间的查看
(说明:只显示当前目录下面的子目录的目录大小和当前目录的总的大小)
ls -l 查看文件大小不太准
du -h /etc
du -h --max-depth=0
--max-depth=n表示只深入到第n层目录,此处设置为0,即表示不深入到子目录
du -h --max-depth = 2 /tmp (显示二级目录)最大目录深度
fdisk
fdisk -l 查看硬盘分区信息
fdisk /dev/sdb
m
n 创建分区
p 创建主分区
w 保存
mkfs.ext4 /dev/sdb1 对分区进行格式化
mount /dev/shb1 image/
df -h
mount 磁盘挂载 卸载使用 umount 命令
kail 系统
光驱挂载
cd /media/
mkdir cdrom
mount /dev/cdrom ./cdrom/
cd cdrom/
卸载umount /media/cdrom/
移动硬盘挂载u盘
cd /media/
mkdir u
mount /dev/sdb1 ./u
卸载 umount /media/u/