Linux
版权申明:本文为原创文章,转载请注明原文出处
~
索引
- 索引
- Linux
- Ubuntu
- CentOS
- 常用命令
- sudo
- systemctl
- 命令行/图形界面 切换
- 切换界面
- ip addr 获取网卡信息
- echo
- ln 创建软链接命令
- rm 删除文件/文件夹
- mkdir 创建文件夹
- pwd 显示当前路径
- cd 进入文件夹
- ls/dir/ll 显示文件/文件夹列表
- mv 移动文件
- ps 查进程
- kill 杀死进程
- reboot 重启
- poweroff 关机
- sudo passwd 更改当前用户密码
- top Linux系统状况
- free -m 查看内存占用
- df -h 查看硬盘占用率
- whereis 搜索命令
- nohup 后台运行程序
- jobs 查看后台进程
- chmod/chown/chgrp 修改文件/文件夹权限
- 用户/用户组管理
- 查看磁盘空间占用
- 常用工具
Linux
相关网站
相关系统
- CentOS - CentOS 是一个基于Red Hat Linux 提供的可自由使用源代码的企业级Linux发行版本
- Ubuntu - Ubuntu(友帮拓、优般图、乌班图)是一个以桌面应用为主的开源GNU/Linux操作系统,Ubuntu 是基于Debian GNU/Linux,支持x86、amd64(即x64)和ppc架构,由全球化的专业开发团队(Canonical Ltd)打造
- Debian - Debian 包含Linux操作系统和一些免费的软件分发。Debian是通过许多志愿者的工作来维持和更新的
- 等等…
安全增强型linux
查看当前哪种模式
$ getenforce临时切换成许可模式
$ setforce 0临时切换成强制模式
$ setforce 1修改文件 永久关闭
vi /etc/selinux/config修改项 SELINUX=disabled
Ubuntu
apt 与 apt-get 命令 用于更新软件
目前在Ubuntu18.04以后,尽量使用apt,而不是apt-get。apt可以给出更多的建议安装等提示。
在root用户下, apt upgrade firefox 可以更新firefox软件
普通用户下,sudo apt upgrade firefox ,更新firefox软件。(sudo是以当前用户获得root临时权限)
apt与apt-get的用法:(apt是新的命令,有一些操作不支持,apt-get是老命令,可以支持更多的操作)
apt命令 apt-get命令 命令功能 apt install apt-get install 安装软件包 apt remove apt-get remove 移除软件包 apt autoremove apt-get autoremove 卸载软件包 apt purge apt-get purge 移除软件包及配置文件 apt update apt-get update 刷新存储库索引 apt upgrade apt-get upgrade 升级所有可升级的软件包 apt autoremove apt-get autoremove 自动删除不需要的包 apt full-upgrade apt-get dist-upgrade 在升级软件包时自动处理依赖关系 apt search apt-cache search 搜索应用程序 apt show apt-cache show 显示装细节 apt list 列出包含条件的包(已安装,可升级等) apt edit-sources 编辑源列表
运行AppImage文件
- 文件右键 - 属性 - 权限 - 允许作为程序运行
关闭Ubuntu20 桌面动画 提升流畅性
关闭动画命令
gsettings set org.gnome.desktop.interface enable-animations false打开动画命令
gsettings set org.gnome.desktop.interface enable-animations true
CentOS
相关网站
配置
开启SSH
配置网卡IP地址
要配置网卡IP 先获取网卡名字
使用ip addr获取网卡信息 类似下面的信息 ens33 就是网卡名字
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 00:0a:23:25:d2:d1 brd ff:ff:ff:ff:ff:ff inet 192.168.1.2/24 brd 192.168.1.255 scope global noprefixroute dynamic ens33 valid_lft 35682sec preferred_lft 35682sec inet6 ba80::2aea:f3af:cddf:1232/64 scope link noprefixroute valid_lft forever preferred_lft forever编辑ens33网卡配置文件
vi /etc/sysconfig/network-scripts/ifcfg-ens33 # 修改 BOOTPROTO="dhcp" ONBOOT="yes"修改后这是 DHCP 模式 自动获取IP
配置静态IP地址
vi /etc/sysconfig/network-scripts/ifcfg-ens33 # 修改 bootproto=static onboot=yes # 在文件尾部追加 IPADDR=192.168.1.2 NETMASK=255.255.255.0 GATEWAY=192.168.1.1 DNS1=223.5.5.5 DNS2=8.8.8.8修改后这是 静态 模式
重启网络服务
sudo systemctl restart network结束!
添加开机启动
yum 软件安装工具
yum - 软件包安装工具
更新软件包
yum update安装软件
yum install <name>卸载软件
yum uninstall <name>查询已安装的软件
yum list #或 yum list <name>查询所有软件库
yum search <name>更新缓存yum源
yum clean all yum makecache查看yum软件版本
yum repolist all | grep <name>
添加包签名到信任密钥列表
如:
sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm
CentOS 7安装Gnome GUI 图形界面
当你安装的centos是服务器版本的时候,系统默认是不会安装 CentOS 的图形界面程序的,比如:gnome或者kde, 那么如果你想在图形界面下工作的话,可以手动来安装CentOS Gnome GUI包。
- 在安装Gnome 包之前,我们需要先检查下安装源是否正常,因为我们要通过yum命令来安装gnome包,而yum命令式通过yum 源来下载安装包的。
在命令行下输入下面的命令来安装 Gnome 包
$ sudo yum groupinstall "GNOME Desktop" "Graphical Administration Tools"更新系统的运行级别
如果你想 在系统下次 启动的时候自动进入图形界面,那么我们需要更改系统的运行级别,输入下面的命令来启用图形界面。$sudo ln -sf /lib/systemd/system/runlevel5.target /etc/systemd/system/default.target重启系统 当系统再次启动的时候,就会默认进入图形界面。通过VNC登陆服务器
htop 进程管理查看工具
启用epel版本
htop工具在epel源中提供
启用epel版本命令
yum -y install epel-release
yum 安装 htop
yum -y install htop运行htop
htophtop常用按键
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28F1 : 查看htop使用说明
F2 : 设置
F3 : 搜索进程
F4 : 过滤器,按关键字搜索
F5 : 显示树形结构
F6 : 选择排序方式
F7 : 减少nice值,这样就可以提高对应进程的优先级
F8 : 增加nice值,这样可以降低对应进程的优先级
F9 : 杀掉选中的进程
F10 : 退出htop
/ : 搜索字符
h : 显示帮助
l :显示进程打开的文件: 如果安装了lsof,按此键可以显示进程所打开的文件
u :显示所有用户,并可以选择某一特定用户的进程
s : 将调用strace追踪进程的系统调用
t : 显示树形结构
H :显示/隐藏用户线程
I :倒转排序顺序
K :显示/隐藏内核线程
M :按内存占用排序
P :按CPU排序
T :按运行时间排序
上下键或PgUP, PgDn : 移动选中进程
左右键或Home, End : 移动列表
Space(空格) : 标记/取消标记一个进程。命令可以作用于多个进程,例如 "kill",将应用于所有已标记的进程相关文章
常用命令
sudo
在命令前加入sudo 以root权限执行命令
进入root用户权限
sudo -i sudo su root
systemctl
服务命令
在
/etc/systemd/system/或/usr/lib/systemd/system/目录内创建testapp.service服务文件内容
命令
//设置开机启动 sudo systemctl enable NAME.service //关闭开机启动 sudo systemctl disable NAME.service //启动服务 sudo systemctl start NAME.service //重启服务 sudo systemctl restart NAME.service //停止服务 sudo systemctl stop NAME.service //查询状态 sudo systemctl status NAME.service //修改service文件后 执行重载命令 systemctl daemon-reload
命令行/图形界面 切换
获取当前的默认target
systemctl get-default设置开机默认进入命令行
# 输入命令: sudo systemctl set-default multi-user.target # 重启: reboot设置开机默认进入图形界面
# 输入命令: sudo systemctl set-default graphical.target # 重启: rebootLinux系统7个运行级别
- 0:关机,停机模式、
- 1:单用户模式、
- 2:多用户模式、
- 3:完整的多用户文本模式、
- 4:系统未使用,保留一般不用、
- 5:图形化模式、
- 6:重启模式
运行级就是操作系统当前正在运行的功能级别。这个级别从0到6 ,具有不同的功能。
具体说明:图形化模式,登陆后进入图形GUI模式或GNOME、KDE图形化界面,如X Window系统。命令行输入# GUI模式 ln -sf /lib/systemd/system/runlevel5.target /etc/systemd/system/default.target # 命令行模式 ln -sf /lib/systemd/system/runlevel3.target /etc/systemd/system/default.target # 重启 reboot
切换界面
- 按键盘的 Control + Alt + {F1 - F7}
ip addr 获取网卡信息
ip addr
echo
输出到命令行窗口
$ echo 'abc\n' //或 使用 -e 使用转义符 $ echo -e 'abc\n'输出到文件
// 修改覆盖文件内容 $ echo 'abc' > a.txt // 追加文件内容 原内容会保留 $ echo 'abc' >> a.txt
ln 创建软链接命令
创建软连接
$ ln -s 程序路径包括程序文件名 /usr/bin/自定义程序名 # 例 $ ln -s /usr/local/bin/python3.6 /usr/bin/python3 # 设置后 可以在任意文件夹位置 执行python3
rm 删除文件/文件夹
rm命令
-r 向下递归所有文件夹即文件 一并删除
-f 就是直接强行删除,不作任何提示的意思。# 强制删除文件/文件夹/路径下的所有文件 rm -rf <文件/文件夹名/路径>
mkdir 创建文件夹
mkdir命令
mkdir <文件夹名>
pwd 显示当前路径
pwd 命令
pwd
cd 进入文件夹
进入当前路径下的abc文件夹
cd abc进入绝对路径
cd /usr/bin # 进入用户文件夹 cd ~/
ls/dir/ll 显示文件/文件夹列表
显示当前路径列表
ls # 显示所有文件/文件夹 包括隐藏文件 ls -al显示指定路径列表
ls /root # 显示root路径是否存在以a开头的文件/文件夹 ls /root/a*帮助信息
ls --help
mv 移动文件
移动文件
mv oldpath newpath重命名
mv oldfilename newfilename
ps 查进程
命令
ps 命令查找与进程相关的PID号: ps a 显示现行终端机下的所有程序,包括其他用户的程序。 ps -A 显示所有程序。 ps c 列出程序时,显示每个程序真正的指令名称,而不包含路径,参数或常驻服务的标示。 ps -e 此参数的效果和指定"A"参数相同。 ps e 列出程序时,显示每个程序所使用的环境变量。 ps f 用ASCII字符显示树状结构,表达程序间的相互关系。 ps -H 显示树状结构,表示程序间的相互关系。 ps -N 显示所有的程序,除了执行ps指令终端机下的程序之外。 ps s 采用程序信号的格式显示程序状况。 ps S 列出程序时,包括已中断的子程序资料。 ps -t <终端机编号> 指定终端机编号,并列出属于该终端机的程序的状况。 ps u 以用户为主的格式来显示程序状况。 ps x 显示所有程序,不以终端机来区分。常用命令
ps aux # 使用grep管道 查找指定程序名 ps aux | grep <程序名> # 查看所有进程 ps -ef
kill 杀死进程
杀死指定PID号进程 可以用ps命令查找PID号
kill -9 333杀死指定名的进程
kill -9 <NAME>
reboot 重启
reboot
poweroff 关机
poweroff
sudo passwd 更改当前用户密码
sudo passwd
top Linux系统状况
监控Linux系统状况 CPU 内存
查看内存使用说明 (shift+m 按照排名) 按 Q 退出
类似任务管理器
-
top
free -m 查看内存占用
free -m
df -h 查看硬盘占用率
df -h
whereis 搜索命令
搜索包含python的路径名
whereis python
nohup 后台运行程序
设置进程为后台进程
运行程序前面加 nohup 表示不挂断的运行命令
在运行程序后面加入 & 表示这个命令放在后台执行
# 使 dotnet CoreWebDemo.dll 在后台运行 即便关闭远程连接一样可以运行 nohup dotnet CoreWebDemo.dll &
jobs 查看后台进程
查看后台进程 可以通过kill -9 进程ID 来结束进程
jobs -l
chmod/chown/chgrp 修改文件/文件夹权限
chmod 命令 修改文件权限
# 增加写入权限 chmod u+w 文件名 # 去除写入权限 chmod u-w 文件名 # 直接修改权限 777 表示所有权限 chmod 777 文件名chown 命令 修改文件所有者
# 将 /u 的属主更改为"root"。 chown root /u # 和上面类似,但同时也将其属组更改为"staff"。 chown root:staff /u # 将 /u 及其子目录下所有文件的属主更改为"root"。 chown -hR root /u # 将 /u 目录下所有文件和子目录的属主改为root chown -R root /uchgrp 命令 修改文件用户组
# 将 /u 的属组更改为"staff"。 chgrp staff /u # 将 /u 及其子目录下所有文件的属组更改为"staff"。 chgrp -hR staff /u # 如果要修改该目录下所有文件和目录,使用-R参数。 chgrp -R staff /u
用户/用户组管理
创建/删除用户
# 建立新用户账号 useradd # 删除用户 userdel修改账户
# 设置用户密码 passwd user1 # 修改账户 usermod # 将用户 user1的登录名改为 u1 usermod –l u1 user1 # 将用户 user1 加入到 users组中, usermod –g users user1 # 将用户 user1 目录改为/users/us1 usermod –d /users/us1 user1查看用户
# 查看当前用户 w who users # 查看系统中所有用户 grep bash /etc/passwd # 或 cat /etc/passwd | cut -f 1 -d:
查看磁盘空间占用
磁盘空间占用情况 命令
df -hl查看指定目录空间占用情况 命令
du -hl --max-depth=1 /root查看当前目录空间占用情况 命令
du -hl
常用工具
vi/vim文本编辑工具
编辑文件
$ vim a.txt $ vi a.txt进入文件后 按键盘 I 进入编辑模式 按 esc 退出编辑模式进入命令模式
命令模式:
- shift+g - 光标直接跳转到最后一行
- shift+a - 光标跳转到本行末尾 并进入编辑模式
- shift+z+z - 保存退出
- I - 进入编辑模式
- ESC - 退出编辑模式/进入命令模式
- :w - 保存
- :wq - 保存退出
- :wq! - 强制保存退出
- :q! - 强制退出不保存
curl 请求网页数据
访问网页保存到文件
$ curl -o filename.txt http://192.168.1.1/1.txt发送POST请求的数据体
$ curl -d'login=aaa&password=111'-X POST http://192.168.1.1/login # 或 $ curl -d 'login=aaa' -d 'password=111' -X POST http://192.168.1.1/login # 读取本地文件发送 $ curl -d '@data.txt' http://192.168.1.1/login发送GET请求
$ curl -G -d 'login=aaa&password=111' http://192.168.1.1/login
wget 下载工具
命令
wget http://1.1.1.1/abc.tar会下载到当前文件夹
还可以用来测试网速 找一个大文件直接下载
netstat 查看活动连接
# centos7 默认没有netstat命令 需要安装 net-tools
yum install -y net-tools
netstat
# 查看监听(Listen)的端口
netstat -lntp
# 查看所有运行中的服务的详细信息
netstat -tulpn
# 查看端口被占用情况
netstat -tunlp|grep 端口号
# 查看所有建立的TCP连接
netstat -antp
# 查看所有端口占用情况
netstat -antp | grep :
# 查看80端口被哪个服务占用 或 netstat -antpuel | grep ":22" | grep -v grep(过虑grep本身)
netstat -antp | grep :80
arp 获取局域网信息
ARP命令可用于查询本机ARP缓存中IP地址和MAC地址的对应关系
arp -a arp
tar 解压/压缩工具
打包成tar.gz压缩包
# tar -zcvf renwolesshel.tar.gz /renwolesshel解压tar.gz压缩包
# tar zxvf renwolesshel.tar.gz打包成tar.bz2格式压缩包
# tar -jcvf renwolesshel.tar.bz2 /renwolesshel解压tar.bz2格式的压缩包
# tar jxvf renwolesshel.tar.bz2压缩成zip格式
# zip -q -r renwolesshel.zip renwolesshel/解压zip格式的压缩包
# unzip renwolesshel.zip
Linux服务器流量带宽监控/统计
- 参考文章 (未经测试)
Linux C语言生成可执行文件
firewalld 防火墙
查看防火墙状态
sudo systemctl status firewalld看到active(running)就意味着防火墙打开了
启动防火墙
sudo systemctl start firewalld重启防火墙
sudo systemctl restart firewalld临时关闭防火墙
sudo systemctl stop firewalld开机启动防火墙
sudo systemctl enable firewalld开机不启动防火墙
sudo systemctl disable firewalld查看防火墙规则
firewall-cmd --list-all查看防火墙所有开放的端口
firewall-cmd --zone=public --list-ports用户配置目录
/etc/firewalld/添加自定义端口
firewall-cmd --permanent --add-port=9999/tcp firewall-cmd --permanent --add-port=9999/udp–permanent //设置为持久
–add-port //标识添加的端口还可以增加Zone命令 区概念
//开放端口 firewall-cmd --zone=public --permanent --add-port=9999/tcp firewall-cmd --zone=dmz --permanent --add-port=9999/tcp //关闭端口 firewall-cmd --zone=public --permanent --remove-port=5672/tcp
iptables 防火墙
查看规则列表
iptables -L -x -n放行端口
iptables -I INPUT -p tcp --dport 80 -j ACCEPT保存规则 使用保存规则前 必须关闭firewalld 和 安装 iptables-services
systemctl disable firewalld //关闭防火墙 yum install iptables-services //安装iptables-services systemctl enable iptables //启用iptables-services service iptables save //保存规则
lsof 查看端口
# 查看端口被占用情况
lsof -i:端口号
.sh bash脚本
文件头加入
# 表示该程序由/bin/bash来解释运行 #!/bin/bash打印命令
echo -e "\n测试脚本\n"打印带颜色的字符
red='\e[91m' none='\e[0m' _red() { echo -e ${red}$*${none}; } echo -e "${red}这是红色${none}"读取命令行输入
read -r$ 表示后面的字符是变量
a=1 echo -e $a # 输出的是 1 echo -e a # 输出的是 a退出命令
exit 1判断
# 判断yum是否已安装 if [[ $(command -v yum) ]]; then echo -e "已安装yum" else echo -e "未安装yum" fi # 判断变量的值 a=1 if ((a == 1));then ((a = a + 1)) echo -e $a else echo -e "a != 1" fi # 正则表达式 判断是否为数字 a=586445612533425 if [[ $a =~ (^)([0-9]+)($) ]] then echo -e "数字" else echo -e "非数字" ficase
a=3 case $a in '1') echo -e "是1" ;; '2') echo -e "是2" ;; *) echo -e "都不是" ;; esac变量
a = 1 # 使用事 a 前面加 $ 例如这也 $a变量名 含义 $0 shell或shell脚本的名字 $* 以一对双引号给出参数列表 $@ 将各个参数分别加双引号返回 $# 参数的个数 $_ 代表上一个命令的最后一个参数 $$ 代表所在命令的PID $! 代表最后执行的后台命令的PID $?获取上一个命令执行后的退出状态 echo $? 返回0执行成功 非0值执行失败 $abc abc是变量名 引用变量 转义符
转义字符 扩展成... \a 响铃符 \b 退格符 \e ANSI转义符,等价于\033 \f 馈页符 \n 换行符 \r 回车符 \t 水平制表符 \v 垂直制表符 \\ 反斜杠 \' 单引号 \nnn 十进制值为nnn的8-bit字符(1-3位) \xHH 十六进制值为HH的8-bit字符(1或2位) \cx control-X字符创建一个暂存文件 或 目录供shell script使用
# 创建一个暂存目录 path="$(mktemp -d)" echo $path # 创建一个暂存文件 tmpfile="$(mktemp -t)" echo $tmpfile

