系统命令
系统、权限
命令 | 功能 |
---|---|
sudo | 临时获取ROOT权限(用于命令开头) |
sudo su root | 切换为root用户 |
shutdown | 关机 |
poweroff | 关机 |
halt | 关机(CentOS) |
reboot | 重启 |
nautilus | 以根权限开打文件管理器 |
ps -A | 正在运行进程的列表 |
kill 5 位进程号 | 杀死指定进程 |
adduser 用户名 | 添加新用户 |
sudo passwd -u root | 启用根用户(Ubuntu) |
sudo su root | 启用根用户(CentOS) |
sudo passwd root | 设置根账户的密码 |
vim /ect/sudoers | 配置账户权限c |
chown 用户名 文件名 | 改变文件的拥有者 |
chmod u+rwx g+r o+r 文件名 | 允许当前用户读写,其他账户读取 |
chmod a+w 文件名 | 所有用户可写 |
chmod 777 文件名 | 所有用户可读写(加-R 参数会递归处理子目录) |
CentOS用户管理
参考文章:https://www.cnblogs.com/dubhlinn/p/11055010.html
- 用户、组、家目录的概念:
- linux系统支持多用户,除了管理员,其他用户一般不应该使用root,而是应该向管理员申请一个账号。组类似于角色,系统可以通过组对有共性的用户进行统一管理。每个用户应该至少属于一个组,不能游离于组外;且在创建用户时,系统会在/home目录下自动生成一个目录作为该用户的“家目录”,该用户在登录后会首先进入家目录。家目录可以在添加用户时指定,如果不指定,默认会以用户名来命名。例如,用户bob的家目录默认是/home/bob,他在登录linux系统后,会首先进入/home/bob。
- 文件与用户、组的关系:
- 用户创建了文件,则这个用户就自动成为这个文件的"所有者",这个用户所在的组就成为文件的"所在组",除了所有者和所在组的用户,系统中的其他用户对于文件都是"其他组"的用户。可以通过ls -l命令查看文件的所有者和所在组。但是文件的所有者和所在组并不是固定不变的,可以修改。
- 添加用户:
useradd 用户名 [-d 家目录] [-g 组名]
- “家目录”可选,不指定时默认为/home目录下同用户名。“组名”可选,不指定时默认为同用户名。
- 例如,要新建一个名为zhangsan的用户,家目录为/home/zhang3,属于sales组,命令为:useradd zhangsan -d /home/zhang3 -g sales。
- 设置或修改用户密码:
passwd 用户名
- 回车之后,会要求输入两次新密码。
- 删除用户:
userdel [-r] 用户名
- -r是可选项,表示同时删除该用户的家目录。一般情况下删除用户时并不需要删除他的家目录。
- 查看用户信息:
id 用户名
- 回车之后,会显示用户id、组id等信息。
- 切换用户:
su - 用户名
- 如果是从高权限用户切换到低权限用户,例如从root切换到普通用户,不需要密码;反之则需要输入密码。经测试,切换到用户本身时,从root到root不需要密码,从普通用户到它自己时需要密码。
- 添加组:
groupadd 组名
- 注意不能重复添组,会返回错误提示。
- 删除组:
groupdel 组名
- 注意如果这个组是一个或多个用户的主组,则不能删除。
- 修改用户所属的组:
usermod -g 组名 用户名
- 修改用户的家目录:
usermod -d 家目录 用户名
- 修改文件或目录的所有者:
chown -R 用户名 目录
- -R可选,表示级联修改目录下面的子目录和文件的所有者。
- 修改文件或目录的所在组:
chgrp -R 组名 目录
- -R可选,表示级联修改目录下面的子目录和文件的所有者。注意修改文件的所有者和所在组是相互独立的事件,互不影响。
- 同时修改文件或目录的所有者和所在组:
chown -R 用户名:组名 目录
- -R可选,表示级联修改目录下面的子目录和文件的所有者。这里的用户和组没有必然联系,即用户可不属于的这里的组。
权限管理
参考文章:https://www.cnblogs.com/dubhlinn/p/11055010.html
LOGO展示
有些软件可以一目了然的展示本机状态
例如screenfetch
- 安装
apt install screenfetch
- 执行
screenfetch
硬件资源
-
top
- 显示当前系统中占用资源最多的一些进程, shift+m 按照内存大小查看。
-
free:显示当前系统内存的使用情况,包括物理内存、交换内存(swap)和内核缓冲区内存。
-
可选参数
- -b:以Byte为单位显示内存使用情况。
- -k:以KB为单位显示内存的使用情况。
- -m:以MB为单位显示内存使用情况。
- -h:以更加友好的方式显示内存使用情况。
- -s N:每N秒打印一次。
- -t:显示总的RAM + swap。
- -V:显示版本信息。
-
输出详解:
- Mem
- total:系统总内存。
- used:程序已使用内存。
- free:空闲内存。
- shared:程序共享的内存空间,往往为0。
- buff/cache:buffer和cache可以在需要时被释放回收,但不是所有的buffer/cache空间都可以被回收。
- available:free + buffer/cache - 不可被回收内存(共享内存段、tmpfs、ramfs等)。
- Swap内存交换机制
- 交换机制是使用时间换空间的。相比磁盘,内存真的小的可怜,我们日常使用的民用计算机一般就是4G、8G的内存,磁盘的却有500G、1T之大。交换机制就是把一些不常用的内存的数据暂时存储到磁盘上面上去,腾出来的内存空间留作他用,在需要的时候再从磁盘中将数据读入内存中。这样做虽然从真正需要数据到数据展示在户面前的过程变慢了,但却让整个系统拥有了看似更多的内存。
- Mem
-
参考博文:https://www.cnblogs.com/wayneiscoming/p/7865068.html 、https://blog.csdn.net/u011373710/article/details/70037649
-
-
显卡信息
-
AMD
-
安装工具
sudo apt install radeontop
-
运行radeontop,在终端输入
sudo radeontop
即可,VRAM显示的就是显存大小,GTT表示显卡可以访问的CPU主存。
-
-
-
df:查看磁盘相关信息。
- -a:显示所有文件系统的磁盘使用情况。
- -m:以MB单位显示。
- -文件名:显示指定文件系统的磁盘空间使用情况。
- -T:显示文件系统。
- -h:以更加友好的方式显示磁盘空间使用情况。
Ubuntu设置swap
参考文章:https://blog.csdn.net/weixin_30835923/article/details/95496541 。
swap即交换内存,全称为swappiness。
添加swap:
-
sudo dd if=/dev/zero of=/mnt/1GB.swap bs=1M count=1024
- count=1024参数代表数量,这个正好是1g,直接增大1g。
- 建议根据实际内存来确定交换内存的大小,例如2GB内存建议对应4GB交换内存。若实际内存大于4GB,则两者相等即可。
-
转换为swap文件:
mkswap /mnt/1GB.swap
。 -
激活swap文件:
swapon /mnt/1GB.swap
。 -
上述操作只是临时添加1个swap file,如果要做永久添加,则需要下列步骤:
vim /etc/fstab
- 编辑/etc/fstab文件,在最后添加
/mnt/1GB.swap none swap sw 0 0
。
配置swap使用策略:
- 查看swap使用策略:
cat /proc/sys/vm/swappiness
。 - 修改swap使用策略:
- 临时设置,重启后失效:
sysctl vm.swappiness=60
。 - 通过修改系统默认值的方式永久配置策略,需要重启后生效:
vim /etc/sysctl.conf
。在该文件中设置vm.swappiness=60
,意思是即Swap占60%,memory占40%。
- 临时设置,重启后失效:
启用swap:swapon -a
不使用swap:swapoff -a
。
网络
命令 | 功能 |
---|---|
ping | 测试是否能连接上 |
tracert | 查看IP数据包所走路径的连通情况 |
netstat | 查看本机个端口的连接情况 |
arp | 查看和修改本地主机上的arp表 |
ip addr | 查看IP地址(CentOS) |
ipconfig | 查看网络配置(Ubuntu、Windows) |
ip addr show | 查看网络配置Ubantu |
ifconfig | 查看网络配置(CentOS) |
dhclient | 自动获取IP地址(CentOS) |
service networking restart | 重启网络服务(Ubuntu 16) |
service network restart | 重启网络服务(CentOS 7) |
nmcli c reload | 重启网络服务(CentOS 8) |
systemctl start firewalld | 启用防火墙(CentOS) |
systemctl stop firewalld | 停用防火墙(CentOS) |
ufw disable | 停用防火墙(Ubuntu) |
systemctl reload firewalld | 重载防火墙(CentOS) |
systemctl status firewalld | 查看防火墙状态(CentOS) |
ufw status | 查看防火墙状态(Ubuntu) |
修改指定端口(CentOS):
- 命令:firewall-cmd --zone=public --add-port=80/tcp --permanent
- 含义:
- –zone:作用域。
- –add-port=80/tcp:指定80端口的tcp协议。
- –permanent:永久生效(不使用本参数则系统重启后失效)
修改指定端口(ubuntu):
- 参考文章:https://blog.csdn.net/hqbootstrap1/article/details/94123307?
- 使用iptables管理
- 例如添加规则:
iptables -I INPUT -p tcp --dport 80 -j ACCEPT
- 保存规则:
iptables-save
- 例如添加规则:
- 若要持久化规则,则需要安装iptables-persistent工具来实现。
- 安装:
apt-get install iptables-persistent
- 持久化
netfilter-persistent save
netfilter-persistent reload
- 安装:
应用程序
脚本
Linux下面用命令如何运行.sh文件的方法
- 直接./加上文件名.sh,如运行hello.sh为./hello.sh【hello.sh必须有x权限】
- 直接sh 加上文件名.sh,如运行hello.sh为sh hello.sh【hello.sh可以没有x权限】
包管理
命令 | 功能 |
---|---|
apt-get update | 更新软件列表,在文件 /etc/apt/sources.list 中列出 |
apt-get upgrade | 更新所有软件 |
apt-get remove | 卸载软件 |
apt-get purge | 卸载软件并删除其配置文件 |
apt-get clean | 清除软件包缓存 |
apt-get aotuclean | 清除缓存 |
apt-get install -f | 修复依赖关系 |
apt-cache search 软件名 | 查找软件 |
apt-cache show 软件名 | 显示软件的详细信息 |
dpkg -l | 显示已安装软件 |
rpm -qa|grep 软件名 | 查看本机与指定软件相关的包(CentOS) |
yum -y install 软件名 | 自动下载安装指定软件(CentOS) |
yum remove 软件名 | 删除指定软件 |
yum search 软件名 | 查找软件包(CentOS) |
yum list | 列出所有可安装的软件包(CentOS) |
yum updates | 列出所有可更新的软件包(CentOS) |
yum list installed | 列出所有已安装的软件包(CentOS) |
yum list extras | 列出所有已安装但不在yum repository内的软件(CentOS) |
yum info 软件名 | 获取指定软件的相关信息(CentOS) |
dnf | CentOS 8开始可用,可以直接替代yum(CentOS 8) |
dnf install 软件名 | dnf可以不再使用-y参数,dnf比yum更加智能优雅 |
rpm转deb
参考文章:https://blog.csdn.net/qq_40021015/article/details/121744720
步骤:
- 首先安装alien和fakeroot这两个软件,alien可以将rpm转换为deb包。
sudo apt-get install alien fakeroot
- 使用alien将rpm包转为deb包
fakeroot alien javase*.rpm
- 转换成功,可以即刻使用这个命令来安装。
sudo dpkg -i javase*.deb
源码安装
参考文章:
- 版权声明:本文为CSDN博主「痴迷乐极」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_27984355/article/details/81603315
安装:
-
源码的安装一般三个步骤:配置(configure)、编译(make)、安装(make install)。
-
以openVpn为例
-
tar -zxf openvpn-<version>.tar.gz cd openvpn-<version> ./configure make make install
-
可以使用
--prefix
参数指定安装位置./configure --prefix=/usr/local/app/openvpn
-
可以使用
&&
连接命令,例如make && make install
。
-
-
configure是可执行脚本,它有很多选项,在待安装的源码路径下使用令./configure –help输出详细的选项列表。其中–prefix选项就是配置安装的路径。
- 如果不配置该选项,安装后可执行文件默认放在/usr /local/bin,库文件默认放在/usr/local/lib,配置文件默认放在/usr/local/etc,其它的资源文件放在/usr /local/share,比较分散。
- 为了便于集中管理某个软件的各种文件,可以配置–prefix,如:
./configure --prefix=/usr/local/app/应用名
。这时该应用所有文件都会放在该路径下。 - 另一个好处是卸载软件或移植软件。只须简单地删除该安装目录,就可以把软件卸载得干干净净;移植软件只需拷贝(相同的操作系统)。
-
-
要卸载程序,也可以在原来的make目录下用
make uninstall
,但前提是make文件指定过uninstall。
systemctl
systemctl是Systemd 的主命令,可用于管理系统。
操作service:
- 启动sshd服务:systemctl start ssh.service
- 停止sshd服务:systemctl stop ssh.service
- 查看sshd服务状态:systemctl status ssh.service
- 重启sshd服务:systemctl restart ssh.service
- 设置开机自启动:systemctl enable ssh.service
- 禁止开机自启动:systemctl disable ssh.service
- 重新加载配置文件:systemctl daemon-reload
查询service:
-
列出所有已经加载的systemd units
-
systemctl
-
systemctl | grep docker.service
-
-
列出所有service
-
systemctl list-units --type=service
-
systemctl --type=service
-
-
列出所有active状态(运行或退出)的服务
- systemctl list-units --type=service --state=active
-
列出所有正在运行的服务
- systemctl list-units --type=service --state=running
-
列出所有正在运行或failed状态的服务
- systemctl list-units --type service --state running,failed
-
列出所有enabled状态的服务
- systemctl list-unit-files --state=enabled
文件管理
命令 | 功能 |
---|---|
cd ~ | 家 |
cd / | 根 |
cd … | 上级目录 |
cd - | 上次所在目录 |
pwd | 显示当前所在目录 |
dir | 查看文件列表(Windows) |
ls | 简略显示当前目录下文件 |
ll | 以列表方式显示文件的详细信息 |
ls -l | 以列表方式显示文件的详细信息 |
ll -h | 以更加友好的方式显示文件大小 |
ls -l -h | 以更加友好的方式显示文件大小 |
ls -la | 显示当前目录下文件(含隐藏文件) |
ls -a | 显示指定目录下所有子目录域文件,包括隐藏文件 |
ls -slh | 显示指定目录下所有子目录域文件,包括隐藏文件 |
ls -l|less | 分页显示当面目录下文件(按q退出界面) |
mkdir 名称 | 新建目录 |
rmdir 名称 | 删除指定的空目录 |
touch 文件名 | 创建文件 |
rm 文件名 | 删除文件 |
rm -rf 文件名 | 递归删除文件 |
tar -zxf 文件名 | 解压指定压缩包 |
cp 原路径 新路径 | 复制 |
mv 原路径 新路径 | 移动 |
cat 文件名 | 显示文件内容 |
head -n 数值 文件名 | 显示文件开头指定行数的内容 |
tail -n 数值 文件名 | 显示文件末尾指定行数的内容 |
- ls:包括ls、ll等命令
- ls:显示当前目录下文件。
-
ls命令支持正则表达式:
ls *.py
:显示当前文件夹中带有.py后缀的文件,*
是通配符。- ls ?.py:显示当前文件夹中带有.py后缀的文件,?代表单位通配。
- ls 1[1-6].py:显示当前文件夹中首位为1,次位为1至6的数值。
-
ls支持指定目录
ls /
:查看根目录下的目录
-
- ls:显示当前目录下文件。
- tree:按层级遍历显示
tree -F
:显示目录后面的\
tree -L 2
:只显示两层
- grep
- grep -i “the” demo_file //在文件中查找字符串(不区分大小写)
- grep -A 3 -i “example” demo_text //输出成功匹配的行,以及该行之后的三行。
- grep -r “ramesh” * //在一个文件夹中递归查询包含指定字符串的文件。
grep -C 20 "搜索内容"
//显示搜索内容附近20行文本
- find
- find /bin -name ‘a*’ //查找/bin目录下的所有以a开头的文件或者目录
打开文件管理器(GUI)
- Windows
explorer .\
- 路径是可选的
Terminal
命令 | 功能 |
---|---|
鼠标左键选择文本 | 复制文本(Git Bash) |
鼠标中键 | 粘贴文本(Git Bash) |
鼠标右键 | 粘贴文本(Windows) |
Ctrl加← | 按单词向左移动光标 |
Ctrl加→ | 按单词移向右动光标 |
Shift加Ctrl加C | 复制文本 |
Shift加Ctrl加V | 粘贴文本 |
Ctrl加C | 停止当前正在运行的任务 |
Ctrl加L | 清屏 |
clear | 清屏 |