ssh 远程连接 :ssh 用户名@IP地址 端口号
cat 查看文件的命令 :cat 文件
cat 适合读取小文件,他是一次性将文件内容读取到内存中,且输入到屏幕上
cat file1 file2 file3 >新文件 : 查看多个文件且写入到一个文件中,
cat -n file1 file2 >file3 : 结合重定向查看多个文件一共多少行
cat -b 文件 只给有内容的行,显示其行号,空行不显示
cat -E 显示文本每一行的$符号,每一行的结尾都会添加一个你看不到的$,表示改行的结尾
cat >>文件名<< EOF
>内容1
>内容2
>...
>EOF
写入多行数据
more 命令:分屏显示文本内容
空格: 翻篇
回车:下一行, 但是同cat一样很占内存
less 命令: 如果文本内容过多的话,不会一次性显示读取完,显示页面有多大就先显示多少;
空格: 翻篇
回车:下一行
head 命令: 可用于查看文件的开头部分的内容,有一个常用的参数 -n 用于显示行数,默认为 10,即显示 10 行的内容。
tail 命令:可用于查看文件的内容,有一个常用的参数 -f 常用于查阅正在改变的日志文件。
tail -f filename 会把 filename 文件里的最尾部的内容显示在屏幕上,并且不断刷新,只要 filename 更新就可以看到最新的文件内容。 前提是文件是存在的
可用于检测用户访问网站的行为 tail -f 访问日志
跟踪文件内容变化,但是需要文件退出后,可见,检测程序的日志变化(程序代码追加新内容到文件中)
tail -F filename 也是检测文件内容变化的 ;文件可以是不存在的
mkdir 创建文件目录
rmdir 删除空文件夹 :rmdir 文件夹路径;
mkdir 文件夹名 当前目录不存在该文件夹名字 则自动创建;存在则报错
mkdir dir1 dir2 一次性创建多个文件夹
mkdir ./dir1 ./dir2 ../dir3 一次性创建多个文件夹
一次性 递归创建多个文件夹
-p
mkdir -p /data/ops/nginx/
-p 自动判断,后边的文件夹路径,一层层是否存在,不存在则自动创建
在某个目录,创建多个同级文件夹:shell的花括号用法 (适用于touch, mkdir):
touch /opt/{王超,玉超,老王}
创建多个连续的,有规律的文件,1,2,3,4,5
touch /opt/{1..100}.log
ssh 远程连接
linux : ssh -p port user@host
touch 创建文件:1.文件不存在时创建该文件,普通文件,2.该文件存在时则修改文件时间属性(被访问的时间是什么时候)
当文件名有空格等特殊符号,系统会自动把特殊符号进行转义,用反斜线 \ 显示
echo 打印一段话到屏幕上
echo"你好"
linux 下,1. 单引号 表示 不做特殊符号转义,仅仅是一个纯字符串 2. 双引号 也表示 定义字符串,但它也能 识别特殊符号
echo "你好" > yuchao :把“你好”写入到了yuchao文件上了 同时新建了个yuchao文件;> 号是 重定向输出符
ls 查看显示文件夹里有什么 、查看某个路径下有什么:ls 文件名;ls 文件路径
ls -l (参数,选项):显示更详细的信息,以列表展示; 简写为ll
ls -lh 查看文件详细信息 及 大小并以KB ,MB ,GB单位显示
ls -a (--all) 显示目录中所有文件,包括隐藏文件 ;每个目录下都有两个特殊目录,以及一些特殊文件
.filename 以. 开头的文件,表示是隐藏文件 ;如:建一个隐藏文件 touch .yuchao
systemctl status network 查看network服务的状态;systemctl linux服务管理命令,status:状态,network:网络
systemctl start/stop/restart network 开启/停止/重启 网络服务
systemctl start 某项应用 :开启
systemctl stop 某项应用 :停止
systemctl restart 某项应用 :重启
systemctl reload 某项应用 :重新加载
systemctl enable 某项应用 :开机自启(持久化)
systemctl disable 某项应用 :禁止开机自启
systemctl is-enabled 某项应用 :查询是否持久化(是否开机自启)
su 切换用户 :su - 用户名; 这个短横线表示切换用户的环境变量PATH,且进入该用户家目录,linux中每个用户都有自己的到单独的一套环境变量
hostnamectl 修改主机名 : hostnamectl set-hostname 主机名 ;永久修改主机名 ,每次开机,登录,系统都会读取该文件,
1.修改完之后 直接输入 bash 重新加载系统的环境信息实现
3.存放主机名的文件 /etc/hostname / 下
which 命令 在PATH中找到可执行命令存放在哪个路径下:linux命令实际是可执行文件 如:which ls
id 验证系统中用户是否存在;查看系统中该用户的信息 : id 用户名
stat 显示文件或文件系统的状态,比ls l 更详细 ;stat filename.txt ; 网安角度可以使用这个命令可以根据时间判断系统中的某个重要文件是否被人动过
stat文件时间属性
change time
(文件属性变化的时间)
mv
当文件名发生比变化,文件属性即发生了变化,导致change时间更改
modify time
(文件内容发生变化的时间)
文件内容变化 echo '我是成龙'>file.txt
解释、etc/resolv.conf 的作用
在该文件中,写入配置,并且是主,备,两个dns服务器的地址,为防止,第一个dns服务器挂掉,就无法做域名解析了
[root@linux01~]# cat /etc/resolv.conf
Generated by NetworkManager
nameserver 114.114.114.114
nameserver 223.5.5.5
公网dns
恶意的dns劫持
访问 www.baidu.com,,,却打开了传奇游戏页面
hosts 本地dns域名解析
hosts文件,也是关于dns劫持的一个重要因素,并且更直接
tree命令 查看文件目录结构
需要联网安装后使用:yum install tree -y
rm 删除 :rm 可选参数 可选对象
-r 递归删除,主要用于删除目录,可删除指定目录及包含的所有内容,包括所有子目录和文件
ln命令 ln是link的意思,表示创建一个快捷方式,和windows 图标快捷方式一样
alias别名命令 查看系统的默认别名
自由修改别名 alias rm='rm -i'
自定义用法 变量='变量值',简化繁琐的命令+路径,如查看log日志很繁琐可以定义个命令:
alias lg= 'ls /var/log' 以后只要输入 lg命令 就可查询日志了
这是临时好用的,下次启动就不行了,要想永久好用又不影响别人就写入到自己的用户环境变量中:
~/.bash_profile
vim linux强大的编辑器,使用需要安装
使用模式: 打开文件后 按下输入键 i 键(insert) --开始写东西,写完后 按Esc键 退出编辑模式,--- :wq! (w写入,q退出 ,!强制操作); 如果不保存退出:q!
移动光标位置,并进入编辑模式
I : 表示将光标移动到一行的行首,再进入编辑模式
C : 将光标到行尾的内容进行删除,并进入编辑模式
cp 拷贝命令
1.拷贝文件,且换名:cp /opt/wangchao.txt /home/王超.txt
2.拷贝单个文件,并保持原名称 :
cp /opt/wangchao.txt /
3. 拷贝文件夹,以及递归拷贝操作:
cp -r 原文件夹路径 目标文件夹路径
tar命令
打包+压缩;
打包,将多个文件打包成一个文件,默认是没有压缩功能,不节省磁盘空间
打包+压缩,将一堆零散的文件,打包到一起,之后再压缩,节省磁盘空间
语法:tar 参数选项 打包之后的文件名 要打包的文件或目录1 要打包的文件或目录2
-f 指定文件打包名,此参数必须有,且必须在最后一位
-x 解包,解压缩(将一个单个压缩文件,解压其内容)
tar -xf 通用的万能解压缩命令,可以自动适配各种压缩格式
-z 压缩操作,是tar命令去调用gzip命令的过程,压缩的参数 :tar -czvf 压缩后的名称 要压缩的文件
-z,压缩为.gz格式 ,记住用这个就好了,主流的80%人都用这个
你拿到一个 all_files.tar.gz ,这个如何解压?
tar -zxvf all_files.tar.gz
如果只解压缩不拆包
用:gzip -d 压缩包
再拆包:tar -xvf tar包
-j,压缩为.bz2格式
all_files.tar.bz2 ,如何解压?
tar -xjvf all_files.tar.bz2
-C(大写c ) :解压到指定目录中:
tar -xf 压缩文件名 -C 指定的路径
用tar命令压缩的文件,一般后缀如
*.tar 仅仅是打包了
*.tar.gz 打包+压缩
*.tgz 打包+压缩
zip压缩目录 需要添加 -r 参数
zip 仅仅压缩多个文件的用法 :
zip 压缩后的名称 要压缩的文件1 要压缩的文件2
并且自动给压缩后的文件添加 .zip后缀
zip压缩文件,和文件夹 :
zip -r 压缩后的名字 要压缩的文件夹 要压缩的文件
unzip 解压缩
解压缩,并且指定解压到一个地方 -d
该命令可能需要安装:yum install unzip -y
系统内置变量
PATH :echo ${PATH} 打印系统环境变量路径 当执行命令时,系统优先去PATH中定义目录中寻找,有则执行,无则报错
LANG :ECHO${LANG} 显示是什么字体 ,
LANG ="en_US.UTF-8" 字体是英文
LANG="zh_CN.UTF-8 " 字体是中文
wget 命令:linux下获取 链接的资源 需要下载wget
ps 命令 查看机器上进程信息是否存在
-e 显示所有的进程信息
-f 格式化显示出进程的id号
ps -ef |grep nginx 查看nginx进程信息,是否存在
wc 命令 :用于计算字数
wc -m 统计多少个字符 有几个字母就有几个字符
du 命令 : 用于显示目录或文件的大小,会显示指定的目录或文件所占用的磁盘空间
find 命令: 用于在指定 目录下 查找文件和目录
find是递归搜索
find 从哪里找 -name "你要找什么"
find / -name doupo.txt 找出系统中doupo.txt 文件绝对路径
find /var -type f -name "*.log" 找出/var/下所有.log文件,文本类型文件
.log .txt .tar .tgz .png .gif 他们都是普通文本类型,都可以用 -type f 去查找
find /var -type -d -name "*.log" 查目录,文件夹类型的文件
find ~ -name 'nginx.tgz' 找出家目录下的nginx.tgz 文件 ~代表家目录
find / -type f -name '*.tar' -o -name '*.tgz' -o -name '*.zip' -o -name '*.tar.gz'
找出系统中所有的压缩文件 -o 参数表示 或者 的意思,找出多种类型文件时可用 ;补充:-a 并且的意思
find / -type f -size +20M -name '*.tar' 找出根目录下大于20M的.tar文件
+20M:大于20M , -20 M 小于20M ,20M 等于20M
find / -maxdepth 3 -type f -name filename :限定最大搜索目录为3层 找出某个文件
-maxdepth num 搜索深度,以用户指定的搜索路径为起点
grep 命令: 查找 文件 里符号条件的字符串或正则表达式
grep '关键字' 文件名
grep -n '关键字' 文件名 :找出关键字并显示在第几行
grep -i '关键字' 文件名 :忽略大小写 ;
结合-n grep -n -i
| 管道符: 和grep 结合使用率较多 ,对结果进行过滤
表现形式== 前面每一个进程的输出(stout)直接转化为下一个进程的输入(stdin)
命令1 | 命令2
端口过滤 netatat -tunlp | grep '22'
统计/var/log中 有多少的.log 文件
find /var/log -name '*.log' | wc -l
统计系统有多少个用户 cat /etc/passwd | wc -l
xargs 命令:管道符基本处理的是字符串信息,且是从内容过滤的角度使用管道符,而要实现二次加工,对数据进行处理,就得借助xargs 了
xargs又称管道命令,构造参数等,简单来说,就是把其他命令给他的数据,传递给他做参数
命令1 | xargs -i 选项
选项
用{}代替传递的数据
如:备份.log文件 (批量备份)
find /tmp/ -name '*.log' | xargs -i {} {}.abk
-exec 和 -ok 命令:跟xargs 一样也是二次加工命令
find / -name '.txt' -exec rm{} \; 删除找出的.txt文件 -exec命令 :找到资料后的处理动作 ;用法: 最后要加 ; 并用 \ 转义
find / -name '.txt' -ok rm {} \; 删除之前-ok会提示
netstat -tunlp 这个组合参数,是查看系统上,所有的端口信息
rename 重命名 :
rename 原字符串 新字符串 文件对象
group (组)
groupadd 组添加
group 参数 组名
-g 设置组id号 默认从1000开始,1-999 是系统预留的组 : groupadd -g 1010 zuming
groupmod 组修改
groupmod 参数 组名
groupmod -n 新名字 原组名 ;修改组名
groupmod -g id号 组名 ; 修改组ID ,-g 代表 gid
useradd 创建用户
/etc/passwd 创建用户信息写在这个文件中
useradd 用户名 -g 主组名 :创建的时候就加入某个组(设置主组)
useradd 用户名 -G 组名 2 : 既属于自己组 也属于组名2 这个组(设置附加组)
-M : 不创建用户家目录
用户没有家目录切换该用户时会报错,因为系统无法读取用户的个人配置文件,在使用useradd创建用户的时候,系统会自动去/etc/skel目录下拷贝所有的用户个人环境变量到家目录/home/用户名 下,要解决故障就要拷贝/etc/skel/目录下的所有相关配置文件到用户家目录下:cp -r /etc/skel /home/用户名 即可
-c : 添加注释、在/etc/passd中设置用户注释(选择是否添加)
-s : 设置用户登录shell解释器
/bin/bash 该用户登录系统后,给他使用bash翻译官
用户创建过程,涉及的配置文件
1、在/etc/passwd 文件中创建一行关于这个用户的数据
2、在/etc/shasow文件中新增了一行关于这个用户密码的数据
3、在/etc/group文件中创建一行与用户名相同的组
4、在/etc/gshadow 文件中新增一行与新增群组相关的密码信息
5、自动创建用户的家目录,默认在/home下,与用户名同名
head -5 /etc/passwd 查看系统中前5个用户
tail -5 /etc/passwd 查看系统中后5个用户
userdel 删除用户及配置文件
想删除用户建议注释/etc/passwd用户信息而非直接删除用户
passwd 更改用户密码
标准输入,非交互式设置密码 --stdin
echo '密码' | passwd --stdin 用户名
--stdin 给程序传入的数据 只有根用户才能执行此操作
密码写到这个文件/etc/shadow 默认是0权限,除了root用户任何用户不得查看 两个!!号是空密码
id 查看用户UID,GID,组信息 :
查看用户的一些基本信息;如何验证id命令看到的信息是否正常:-->详细信息还得去/etc/passwd中去看
whoami ,who,w,last,lastlog
sudo 用root身份执行命令(用户身份提权)
在/etc/sudoers 中设置了可执行sudo指令的用户
作用是让普通用户不需要root密码即可使用root权限执行命令
visudo 编辑sudoers 配置文件,添加你的用户信息
1.需要编辑sudo配置文件 /etc/sudoers 你可以用vim去编辑这个文件但是2...
2. linux 提供visudo命令 默认用vi 去打开该文件,且提供语法检测功能
关于如何修改配置文件
1、打开/etc/sudoers文件,找到92行如下配置
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
yuchao ALL=(ALL) ALL
chmod 设置文件权限
chmod 选项 权限 文件
写法1:chmod u-r 文件名
写法2: chmod =rwx 文件名
写法3: chmod u=r,g=rw 文件名
chmod 702 文件名
702= rwx --- -w-
文件权限注意点
1. 系统是用什么用户登录的,以及后续的文件创建动作
2.时不时的观察下文件的权限属性
如:ls -l /etc/passwd (看文件属性时) 属主,属组的权限属性是什么
如: ls -ld /data (看文件夹属性时) 属主,属组的权限属性是什么
set 查看系统的环境变量
set | grep PS1 PS1:控制命令提示符的
PS1='[\u@\h \W]\$ '
lsattr 查看文件扩展属性
lsattr [-adlRvV] [文件或目录...]
sort 对文本进行排序 默认以第一个字符进行大小比较
linux 提供了更专业的域名查找,解析命令
nslookup : name server look up 名称服务器查找,简称,域名查找
交互式 (等待你输入,然后等待给结果) :nslookup
非交互式(等待你输入,然后等待给结果):
nslookup www.baidu.com
dig :dig @全局域名ip 你的域名
dig@223.5.5.5 www.baidu.com
shred 粉碎文件:shred 文件名
rm命令,删除文件是可以恢复的(你的操作其实被系统监控,录制,做了个备份),只要磁盘还未彻底删除,根据磁盘恢复数据手段,还是可以把数据拿回来的,shred之所以叫粉碎文件,是随机写入一堆二进制数据,导致文件无法使用
scp 远程传输 (安全的,远程传输,基于ssh协议认证的传输,机器1,要传文件给机器2,需要进行ssh的账户密码认证)
1.把数据传给另一台机器 :scp 源数据 远程机器
scp /etc/passwd root@192.168.231.133/opt
递归传输 scp -r
2.从另一台机器上拿取数据 : scp 远程机器 自己的机器
scp root@192.168.231.133/opt /etc
递归传输 scp -r root@192.168.231.133/opt /etc