一、用户操作
1.添加用户
- #adduser test #添加一个名为test的用户
- #passwd test #修改密码
- Changing password for user test.
- New password: #在这里输入新密码(输入状态是不显示密码的)
- Retype new password: #在这里二次输入确认密码
- passwd: all authentication tokens updated successfully. #已修改成功的提示
复制代码
2.编辑用户
- usermod –l test123 test #将用户test登录名改为test123
- usermod –g users test123 #将用户test123加入到users组中
- usermod –d /users/test test123 #将用户test123目录改为/users/test
复制代码
3.删除用户
- userdel test #删除用户test
- userdel –r test #删除用户test,同时删除它的工作目录
复制代码
4.切换用户
- su test #用户root切换到用户test,无需输入密码直接切换
- su #用户test切换到用户root,需要输入root用户密码
复制代码
5.sudo切换用户权限
sudo是linux系统管理指令,是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具,如halt,reboot,su等等。这样不仅减少了root用户的登录 和管理时间,同样也提高了安全性。
经由 sudo 所执行的指令就好像是 root 亲自执行,切换到root用户权限:
6.赋予普通用户root权限
方法一:
修改 /etc/sudoers 文件,找到下面这两行代码,在后面添加一行:
- ## Allow root to run any commands anywhere
- root ALL=(ALL) ALL
- test ALL=(ALL) ALL (添加这一行)
复制代码
保存退出
方法二:
修改用户,使其属于root组,命令如下:
修改/etc/passwd文件,到最末尾找到如名为test的行,把用户ID修改为0,保存退出
二、查看目录
1.ls只显示目录
2.如果不加-maxdepth 参数的话那么将会有无穷多目录被列出
- find . -type d -maxdepth 1
复制代码
从根目录下查找所有名称为file.txt的文件
3.使用linux管道命令,grep查找 ‘/$’ 以/结尾的,也即是目录
4
ls -a 列出文件下所有的文件,包括以“.“开头的隐藏文件(linux下文件隐藏文件是以.开头的,如果存在…代表存在着父目录)
ls -l 列出文件的详细信息,如创建者,创建时间,文件的读写权限列表等等
ls -F 在每一个文件的末尾加上一个字符说明该文件的类型。"@“表示符号链接、”|“表示FIFOS、”/“表示目录、”="表示套接字
ls -s 在每个文件的后面打印出文件的大小
ls -t 按时间进行文件的排序
ls -A 列出除了".“和”…"以外的文件
ls -R 将目录下所有的子目录的文件都列出来,相当于我们编程中的“递归”实现
ls -L 列出文件的链接名
ls -S 以文件的大小进行排序
三、目录切换
cd xxx 进入到某个目录
cd www 进入到www目录;
cd .. 返回上一级目录;
cd - 返回到上次的目录,类似windows返回 ;
cd / 回到根目录。
四、目录文件操作
mkdir xxx 创建目录
rm -rf xxx 删除目录,-r表示递归处理子目录和文件,-f表示无提示强制删除
mv xxx www 把xxx目录移动到www目录,或者把xxx目录重命名为www (mv既可以重命名又可以移动文件或文件夹)
| 命令 | 功能 |
|---|
| ls | 查看当前目录列表 |
| ll | 查看当前目录列表详情 |
| pwd | 查看当前路径 |
| mkdir xxx | 创建目录 |
| touch | 创建文件 touch xxx.txt |
| > | 创建文件 > xxx.txt (如果当前目录已有此文件,直接覆盖原文件,不会有任何提示) ls > xxx.txt 将ls查询的列表结果写入文件 ps -ef | grep java >test.ini 将结果写入文件 echo $PATH > test.ini 将结果写入文件 |
| >> | 创建文件 >> xxx.txt (如果当前目录已有此文件,追加在原文件末尾,不会覆盖原文件的内容) ls >> xxx.txt 将ls查询的列表结果追加到文件 ps -ef | grep java >>test.ini 将结果追加到文件 echo $PATH >> test.ini 将结果追加到文件 |
| cat | 其实用的也是 > 和 >> cat > test.ini cat >> test.ini 区别是敲完命令会进入test.ini的编辑模式,可以直接输入内容,最后按ctrl+z退出编辑模式自动保存 cat还可以结合eof,eof可以作为一个分界符,遇到下一个分界符时停止输入 cat结合exit,和eof同理 |
| vi xxx.txt 或 vim xxx.txt | 创建文件 |
| cp | 复制目录或文件 cp -r aaa/ bbb 复制文件夹(包括子目录) |
| rm | 删除目录或文件 rm -rf xxx 强制删除当前目录下所有内容 -r表示递归处理子目录和文件,-f表示无提示强制删除 |
| mv | 移动或重命名目录文件 mv xxx www 把xxx目录移动到www目录 |
| diff a b | 比较a文件与b文件的差异 |
五、查看系统版本是CentOS还是Ubuntu
lsb_release -a 如果有版本信息为Ubuntu,提示“command not found”为CentOS
cat /etc/redhat-release 有版本信息为CentOS,无版本信息为Ubuntu
六、端口控制
安装netstat工具
netstat -ntlp 列出所有端口
netstat -lnp|grep 80 查看80端口被哪个进程占用
netstat -anp|grep 80 查看80端口被哪个进程占用,下面的例子表示80端口被nginx占用
参数说明
-a (all)显示所有选项,默认不显示LISTEN相关
-t (tcp)仅显示tcp相关选项
-u (udp)仅显示udp相关选项
-n 拒绝显示别名,能显示数字的全部转化成数字。
-l 仅列出有在 Listen (监听) 的服務状态
-p 显示建立相关链接的程序名
-r 显示路由信息,路由表
-e 显示扩展信息,例如uid等
-s 按各个协议进行统计
-c 每隔一个固定时间,执行该netstat命令。
查看端口是否开放
查看80端口是否开放,无信息表示未开放,有信息表示开放并显示占用端口的进程号
lsof -i:80 或 lsof -i tcp:80
开放指定端口
开启8888端口(前提是服务器有装iptables)
/sbin/iptables -I INPUT -p tcp --dport 8888 -j ACCEPT
查看进程详情
查看1777进程的详细信息
ps 1777
杀死进程
kill掉占用端口的1777进程
kill -9 1777
批量杀死占用端口的进程,释放端口
如果8001端口下面进程较多,可以用批量杀掉进程
sudo kill -9 $(lsof -i:8001 -t)
或
kill -9 $(sudo lsof -i tcp:进程号 -t)
持续监听端口信息
这个命令会每秒钟运行一次 netstat -anotlp | grep 20000
- watch -n 1 "netstat -anotlp | grep 20000"
复制代码
七、防火墙控制
1.iptables防火墙控制方式
service方式
service iptables status 查看防火墙状态,如果为空则未运行防火墙。
service iptables start 开启防火墙
service iptables stop 关闭防火墙
iptables方式
先进入init.d目录,命令如下:
cd /etc/init.d/
然后
/etc/init.d/iptables status 查看防火墙状态
/etc/init.d/iptables stop 暂时关闭防火墙
/etc/init.d/iptables restart 重启iptables
2.Firewall防火墙控制方式
firewall-cmd --state 查看防火墙运行状态
firewall-cmd --zone=public --list-ports 查询哪些端口已经开放
开启端口
firewall-cmd --zone=public --add-port=9999/tcp --permanent 设置开放9999端口,其中–permanent的作用是使设置永久生效,不加的话机器重启之后失效
关闭端口
firewall-cmd --zone=public --remove-port=9999/tcp --permanent 设置关闭9999端口
开启//关闭端口需要重新载入
firewall-cmd --reload 重新载入一下防火墙设置,使端口设置生效
查询端口生效状态
firewall-cmd --zone=public --query-port=9999/tcp 查看端口开放是否生效,yes为生效,no为未生效
systemctl 控制
systemctl status firewalld 查看防火墙打开状态
systemctl start firewalld 开启防火墙
systemctl stop firewalld 关闭防火墙
systemctl enable firewalld 开机自启动防火墙
systemctl disable firewalld 禁止开机自启动,永久关闭防火墙
Firewall设置参考链接
https://blog.csdn.net/ywd1992/article/details/80401630
api文档: http://man.linuxde.net/
八、进入编辑模式
VIM编辑器,可以新建文件也可以修改文件
进入编辑器后先按i切换到INSERT(插入)状态,可以通过上下左右移动光标,或空格、退格及回车等进行编辑内容。
当文本编辑结束之后,退出编辑器分为4种情况:保存退出、正常退出、不保存退出及强制退出。
保存修改退出:
方法一:
首先按键盘左上角的"ESC"退出INSERT(插入)状态,然后输入:,再输入命令WQ或x,回车就保存退出了。
命令含义:W:write(写入) Q:quit(退出),x=WQ
如果在root权限下保存提示错误:E45: 'readonly' option is set (add ! to override),可以输入:wq! 强行保存退出。
方法二:
最快捷的方法:先按ESC,再按shift+zz,或者切换到大写模式按ZZ(即是按2下大写的Z),保存退出。
无修改退出: 先按ESC,再输入:q
不保存退出: 先按ESC,再输入:q!
强制退出: 先按ESC,再输入:!
清除所有内容
用 vim 打开目标文件,输入:%d回车就可以清空。
% 是匹配所有行
d 是删除的意思
editor编辑器
进入编辑模式
保存:ctrl+s
退出:ctrl+x
九、网卡相关
查看内网ip
方法一:
红色框内是ip地址
方法二:
红色框内是ip地址
如果查不到IP,编辑/etc/sysconfig/network-scripts/ifcfg-eth0或者ifcfg-ens33文件,两个只会存在一个,找到对应的就好
- vi /etc/sysconfig/network-scripts/ifcfg-eth0
复制代码
或
- vi /etc/sysconfig/network-scripts/ifcfg-ens33
复制代码
配置文件中的noBoot=“no” (默认是不启动网卡),修改为noBoot=“yes”
然后按ESC,输入:wq保存并退出,执行下面命令重启网卡
再重新输入查看ip命令就可以了
重新配置IP
ifconfig 网卡名 IP
- ifconfig enp0s3 10.10.90.243
复制代码
十、查看配置
| 配置项 | 命令 |
|---|
| CPU信息(详细) | cat /proc/cpuinfo |
| CPU信息(简单) | grep “model name” /proc/cpuinfo | cut -f2 -d: |
| CPU信息(极简) | cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c |
| CPU位数 | getconf LONG_BIT |
| 物理CPU的个数 | cat /proc/cpuinfo |grep “physical id”|sort |uniq|wc -l |
| 逻辑CPU的个数 | cat /proc/cpuinfo |grep “processor”|wc -l |
| CPU核数 | cat /proc/cpuinfo |grep “cores”|uniq |
| CPU主频 | cat /proc/cpuinfo |grep MHz|uniq |
| 内存信息(详细) | cat /proc/meminfo |
| 内存信息(简单) | free -m |
| 总内存 | grep MemTotal /proc/meminfo |
| 磁盘信息 | df -h |
| 磁盘总量 | fdisk -l |
| 磁盘分区信息 | fdisk -l |
| 磁盘全部占用空间 | du -sh |
| 操作系统内核 | uname -a |
| 监控系统cpu、内存的使用状况 | top (按q退出监控状态) |
十一、压缩解压
tar命令
参数说明:z:gzip文件,x:解压文件, v:显示过程,f:指定文件
解包解压
1.解包语法:tar xvf xxx.tar
2.解压语法: tar -zxvf xxx.tar.gz
打包压缩
1.打包语法:tar -cvf xxx.tar /xxx/
2.打包压缩语法:tar -czvf xxx.tar.gz /xxx/
- tar -czvf xxx.tar.gz /xxx/
复制代码
3.打包时修改压缩包的文件夹名称
示例:打包改名成yyy包
- tar -czvf yyy.tar.gz --transform='s|^xxx|yyy|' xxx
复制代码
gzip工具
安装gzip
参数
| 参数 | 说明 |
|---|
| -c | –stdout在标准输出上写入,保持原始文件不变 |
| -d | –decompress解压缩 |
| -f | –force强制覆盖输出文件并压缩链接 |
| -h | –help提供此帮助 |
| -l | –list列出压缩文件的内容 |
| -L | -许可证显示软件许可证 |
| -n | –no-name不保存或恢复原始名称和时间戳 |
| -N | –name保存或恢复原始名称和时间戳 |
| -q | –quiet禁止所有警告 |
| -r | –recursive在目录上递归操作 |
| -S | –suffix = SUF在压缩文件上使用后缀SUF |
| -t | –test测试压缩文件的完整性 |
| -v | –verbose详细模式 |
| -V | –version显示版本号 |
| -1 | –fast快速压缩 |
| -9 | -最佳压缩效果更好 |
| -rsyncable | 制作对rsync友好的存档 |
压缩、解压
- gzip xxx.txt
- gzip -d xxx.txt
复制代码
保留源文件压缩、解压
- gzip -c xxx.txt > xxx.txt.gz
- gunzip -c xxx.txt.gz > xxx.txt
复制代码
zip、unzip工具
参数
| 参数 | 说明 |
|---|
| -c | 添加注释到压缩文件。 |
| -j | junk paths,丢弃路径信息,只压缩文件名。 |
| -l | 将压缩文件中的所有文件列表输出到控制台。 |
| -m | 移动文件到压缩文件中,压缩后原始文件将被删除。 |
| -n | 不要压缩具有特定扩展名的文件(后面跟随扩展名列表)。 |
| -o | 只添加指定的文件到压缩文件(覆盖压缩文件中已有的文件)。 |
| -r | 递归地添加目录和子目录到压缩文件。 |
| -u | 更新现有的压缩文件,添加新文件或更新已存在的文件。 |
| -v | 详细模式,显示命令执行的详细信息。 |
| -x | 排除路径列表中的文件或目录(后面跟随路径列表)。 |
| -y | 假设所有答案为“是”,不提示任何问题。 |
| -z | 创建压缩文件后直接退出(用于脚本中)。 |
打包压缩文件
- zip -q -r html.zip /home/html
复制代码
从压缩包中删除指定文件
- zip -dv html.zip index.html
复制代码
更新压缩包中指定文件
- zip -f html.zip index.html
复制代码
解压压缩包
菜鸟教程 Linux zip 命令
十二、网卡管理
切换网络后更新IP地址
- dhclient -r #释放IP
- dhclient #获取IP
复制代码
配置网卡固定IP地址
编辑配置文件
- vim /etc/netplan/00-installer-config.yaml
复制代码
00-installer-config.yaml内容
从
- # Let NetworkManager manage all devices on this system
- network:
- ethernets:
- enp0s3:
- dhcp4: yes
- version: 2
- renderer: networkd
复制代码
改为
- # Let NetworkManager manage all devices on this system
- network:
- ethernets:
- enp0s3:
- dhcp4: yes
- addresses: [10.20.60.235/24]
- version: 2
- renderer: networkd
复制代码
更新发布后就完成了
【扩展方案】
虚拟机里中配置访问宿主机上的DNS服务器地址
在主机网卡中查看网络连接详细信息:控制面板\网络和 Internet\网络连接>网卡 > 右键>状态>详细信息
00-installer-config.yaml 示例:
- # Let NetworkManager manage all devices on this system
- network:
- ethernets:
- enp0s3:
- dhcp4: no
- addresses: [10.20.60.235/24]
- gateway4: 10.20.60.254
- nameservers:
- addresses: [10.20.0.253,114.114.114.114]
- version: 2
- renderer: networkd
复制代码
十三、chmod命令权限
| 命令 | 权限 |
|---|
| chmod a+x 文件名 | a 所有用户(all) u 文件所有者,即创建文件的人(owner) g 和文件所有者相同组的用户(group) o 非文件所有者和相同group的用户(other)
+ 给指定的用户授权指定的权限 - 撤销指定用户的某个权限 = 将指定用户的指定权限重新设置
r 可读权限 w 可写权限 x 可执行权限
|
| chmod 777 文件名 | 777表示用八进制数来指定权限,使所有用户(ugo)都拥有读、写、执行(rwx)权限 |
扩展资料:Linux 中的 -rwxr-xr-x 权限代表什么意思?
十四、nohup命令
nohup 英文全称 no hang up(不挂起),用于在系统后台不挂断地运行命令,退出终端不会影响程序的运行。
语法格式:nohup Command [ Arg … ] [ & ]
| 参数 | 说明 |
|---|
| Command | 要执行的命令 |
| Arg | 一些参数,可以指定输出文件 |
| & | 让命令在后台执行,终端退出后命令仍旧执行 |
启动脚本示例:
在终端如果看到以下输出说明运行成功:appending output to nohup.out
如果要停止运行,你需要使用以下命令查找到 nohup 运行脚本到 PID
- ps -aux | grep "runoob.sh"
复制代码
然后使用 kill 命令来删除:
十五、服务查询
1.查看所有服务
- systemctl list-unit-files --type=service
复制代码
2.模糊查看指定名称的服务
- systemctl list-unit-files | grep "hr_"
复制代码
十六、系统配置
时区管理
1.查看系统时区
2.修改时区,比如上海
- sudo timedatectl set-timezone Asia/Shanghai
复制代码
其他
| 命令 | 功能 |
|---|
| clear | 清屏,windows下cmd的是cls |
| history -c | 清除历史命令记录 |
| echo $PATH | 查看系统环境变量 |
| ln -s [源文件] [目标文件] | 创建软链接,[目标文件]相当于快捷方式 |
| xdg-open . | 在终端中打开文件管理器(Ubuntu) |
| nautilus . | 在终端中打开文件管理器 (Ubuntu) |
| ps -ef | grep node | 查看进程并筛选,这个命令组合会列出当前系统中所有与 node 相关的进程信息。 ps 是 “process status” 的缩写,用于显示当前系统中的活动进程。 -e 选项表示显示所有进程。 -f 选项表示全格式显示,这将提供关于每个进程的详细信息 | 管道符,用于将一个命令的输出作为另一个命令的输入。 grep 是用于文本搜索的命令,它会搜索并显示包含指定模式的行。 node 指定模式的字符 ps -ef >> a 将进程记录保存到a文件 |
| dhclient | 动态获取或释放IP地址 dhclient -r 释放IP dhclient 获取IP |
| rz | Xshell可用,MobaXterm不可用 使用ZMODEM协议,将本地文件批量上传到远程Linux/Unix服务器(不能上传文件夹)。 rz -y 存在同名文件则替换 rz -E 已存在同名文件则重命名新上传的文件,以点和数字作为后缀 |
| tail | 查看日志文件动态 -f 循环读取 -q 不显示处理信息 -v 显示详细的处理信息 -c<数目> 显示的字节数 -n<行数> 显示文件的尾部 n 行内容 –pid=PID 与-f合用,表示在进程ID,PID死掉之后结束 -q, --quiet, --silent 从不输出给出文件名的首部 -s, --sleep-interval=S 与-f合用,表示在每次反复的间隔休眠S秒 |
常见问题处理
【Ubuntu系统】ubuntu18.04磁盘空间满了无法进入系统(3种方式,已解决)