Linux关机重启
命令 |
解释 |
shutdown -h now 或poweroff |
立刻关机 |
shutdown -h 1 |
1分钟后关机,不带参数默认1分钟 |
shutdown -r now |
立刻重启 |
halt |
立刻关机 |
reboot |
立刻重启 |
sync |
把内存的数据同步到磁盘,关机和重启前应该先做这一步,目前shutdown、reboot、halt关机前会执行sync |
Linux用户
- /etc/passwd:user配置文件
- /etc/shadow:口令配置
- /etc/group:组配置
命令 |
解释 |
su |
切换到root用户,环境变量不变 |
su root |
切换到root用户,环境变量改变 |
sudo |
临时获得root权限执行命令 |
logout |
注销,只在运行级别3下有效 |
exit |
退出当前用户 |
useradd cci |
添加一个用户cci,默认该用户的home目录在/home/cci,默认创建同名用户组 |
useradd -d /home/test cci |
directory,添加一个用户cci,指定该用户的home目录在/home/test/cci |
passwd cci |
给用户cci设置密码 |
userdel cci |
root权限删除用户cci,保留home目录 |
userdel -r cci |
root权限删除用户cci,不保留home目录 |
id cci |
查询用户cci的信息 |
who am i |
查看第一次登录的用户信息 |
Linux用户组&文件目录所属组(给组赋权,组用户都拥有该组权限)
用户创建的文件和用户所在所在组一样
命令 |
解释 |
groupadd groupname |
创建一个名为groupname的组 |
groupdel groupname |
删除一个名为groupname的组 |
useradd -g groupname cci |
添加指定用户组的cci用户 |
usermod -g groupname2 cci |
修改用户组 |
chgrp newgroup test.txt |
修改文件所属组 |
Linux运行级别
开机流程:开机->BIOS->/boot->systemd进程->运行级别->运行对应级别的服务
命令 |
解释 |
init 0 |
关机 |
init 1 |
单用户 |
init 2 |
多用户状态没有网络服务 |
init 3 |
多用户状态有网络服务,就是仅命令行 |
init 4 |
系统未使用保留给用户 |
init 5 |
图形界面 |
init 6 |
重启 |
systemctl get-default |
查看当前运行级别,graphical.target 图形界面 |
chkconfig sshd list |
|
Linux授权chmod (change mode)
ls -l
查看文件详情
- 第0位:文件类型(
d
:目录,-
:普通文件,l
软链接,c
:字符设备,鼠标键盘等,b
:块设备)
- 第1-3位User(
u
):所有者权限
- 第4-6位Group(
g
):所属组权限
- 第7-9位Other(
o
):其他用户权限
a
:所有人
权限(r
,w
,x
)
权限 |
权限值 |
解释:文件/目录 |
r |
4 |
read,可读取,可读取 |
w |
2 |
write,可写入,可修改 |
x |
1 |
execute,可执行,可进入 |
例如drwxr-xr-x
代表这个目录所有者可读可写可执行,所属组可读可执行,其他用户可读可执行
命令 |
解释 |
chmod +x a.txt |
授权当前用户可执行权限 |
chmod -x a.txt |
取消当前用户可执行权限 |
chmod u+w a.txt |
授权所有者写入权限 |
chmod a-x a.txt |
取消所有人可执行权限 |
chmod u=rwx,g=r,o=x |
授权所有者所有权限、所属组只读、其他用户可执行 |
chmod 741 a.txt |
授权所有者所有权限、所属组只读、其他用户可执行 |
chmod newowner a.txt |
更改所有者 |
chmod newowner:newgroup a.txt |
更改所有者和所属组 |
-R |
如果是目录,递归生效 |
chgrp newgroup a.txt |
修改所属组 |
Linux目录
命令 |
解释 |
pwd |
显示当前工作目录 |
cd / |
切换到根目录 |
cd ~ 或cd |
切换到当前用户主目录,root是/root,普通用户是/home/cci |
cd .. |
切换到上一级目录 |
cd - |
切换到上次访问的目录 |
ls |
查看当前目录下的所有目录和文件 |
ls -a |
查看当前目录下的所有目录和文件(包括隐藏的文件) |
ls -l |
列表查看当前目录下的所有目录和文件(列表查看,显示更多信息) |
ls /bin |
查看指定目录下的所有目录和文件 |
mkdir tools |
make directory在当前目录下创建一个名为tools的目录,只能创建1级目录 |
mkdir -p /bin/tools |
在指定目录下创建一个名为tools的目录,-p自动创建父级目录 |
mkdir -m 777 tools |
在当前目录下创建一个名为tools的目录并授权777,默认为755 |
cp /home/test1/ /opt/test2/ |
将/home/test1目录下的内容拷贝到/home/test2目录下 |
cp -r /home/test1/ /opt/test2/ |
递归复制,将整个目录拷贝 |
\cp -r /home/test1/ /opt/test2/ |
强制递归覆盖复制,将整个目录拷贝 |
rmdir |
删除当前目录下的空目录 |
rmdir /test |
删除/test下的空目录,非空删除失败 |
rm ttt.txt |
删除当期目录下的ttt.txt文件 |
rm -f ttt.txt |
删除当期目录下的ttt.txt文件,不询问 |
rm -r /home/test |
删除非空目录并询问 |
rm -rf /home/test |
删除非空目录不询问 |
rm -r * |
删除当前目录下的所有文件和目录并询问 |
mv oldname newname |
重命名 |
mv /home/test1/a.txt /opt/test2/ |
移动文件 |
mv /home/test1/a.txt /opt/test2/b.c |
移动文件并重命名 |
mv /home/test /opt/ |
将test目录移动到/opt/下 |
tree /home |
以树形显示目录结构 |
Linuxtouch
命令 |
解释 |
touch a.txt |
文件存在则更新修改时间,文件不存在则创建新文件 |
touch -t 202406180620 a.txt |
文件存在则更新修改时间为2024/06/18/06/20,文件不存在则创建新文件 |
touch -c a.txt |
强制避免新建文件 |
Linux cat
命令 |
解释 |
cat a.c b.c |
查看a.c、b.c的内容 |
cat -n a.c |
查看a.c并显示行号 |
cat -b a.c |
查看a.c并仅显示非空行号 |
cat -t a.c |
查看a.c并显示制表符 |
cat -s a.c |
查看a.c并合并显示连续空行,多空行只显示一空行 |
cat -e a.c |
查看a.c并显示行结束,$代表结束 |
cat /dev/null > a.c |
清空a.c文件 |
cat > c.c |
等待标准输入,新建或覆盖文件,直到按下Ctrl+d |
cat >> d.c |
附加标准输入到文件d.c |
cat a.c b.c > c.c |
将a、b文件内容合并到c,c内容被覆盖 |
Linux more
命令 |
解释 |
more a.c |
查看a.c文件 |
空格键 |
向下翻页 |
Enter |
向下翻一行 |
Ctrl+f |
向下滚动一屏 |
Ctrl+b |
向上滚动一屏 |
= |
退出当前行 |
:f |
输出文件名和当前行号 |
q |
退出 |
Linux less
适合显示大型文件
命令 |
解释 |
less a.c |
查看文件内容 |
空格 |
向下翻页 |
PageDown |
向下翻页 |
PageUp |
向上翻页 |
/ |
和vim一样,向下查找,n 向下、N 向上 |
? |
和vim一样,向上查找,n 向上、N 向下 |
q |
退出 |
Linux echo(shell)
输出内容到标准输出
命令 |
解释 |
echo 123 |
输出123 |
echo -n 123 |
不换行输出123 |
echo "`ip addr`" |
输出执行指定命令的结果 |
echo -e "test\n" |
输出转译字符,加-e就可以换行 |
echo -E "test\n" |
不输出转译字符,默认选项 |
echo "test" > e.c |
输出结果重定向到指定文件 |
echo "test" >> e.c |
输出结果追加到指定文件 |
echo $HOSTNAME |
输出主机名变量 |
echo "$name" |
输出变量,先通过read name 定义变量 |
Linux head
输出头部内容到标准输出,默认前10行
命令 |
解释 |
head /etc/profile |
显示前10行 |
head -n 3 /etc/profile |
显示文件前3行 |
head -c 20 /etc/profile |
显示文件前20个字节 |
Linux tail
输出尾部内容到标准输出,默认尾10行
命令 |
解释 |
tail /etc/profile |
显示尾10行 |
tail -n 5 /etc/profile |
显示尾5行 |
tail -f /etc/profile |
显示文件实时更新 |
tail -v /etc/profile |
显示详细的处理信息 |
tail -c 10 /etc/profile |
显示尾10字节 |
Linux crond任务调度
指定系统在某个时间执行特定的命令或程序,分为系统工作和个别用户工作;所有用户定义的crontab文件都被保存在 /var/spool/cron目录中。其文件名与用户名一致
- 文件:/etc/cron.deny 该文件中所列用户不允许使用crontab命令
- 文件:/etc/cron.allow 该文件中所列用户允许使用crontab命令
- 文件:/var/spool/cron/ 所有用户crontab文件存放的目录,以用户名命名
- 文件:/etc/crontab 系统范围的cron作业
- 文件:/etc/cron.* 系统范围的cron作业
需要安装sudo apt install cron
命令 |
解释 |
select-deitor |
切换文本编辑器 |
crontab -e |
编辑当前用户的crontab |
crontab -e -u cci |
打开cci用户的crontab |
crontab -l |
获取已安排的用户cron作业 |
crontab -r |
删除当前用户的crontab任务 |
service cron restart |
重启任务调度 |
service cron status |
查看cron状态 |
service cron start |
启动cron |
*/1 * * * * ls -l /etc/ > /tmp/minute.txt |
每分钟执行一次命令,把ls -l /etc/ 的内容重定向到`/tmp/minute.txt文件中 |
crontab文件中每一行代表一项任务,语法:
minute hour day month week command
- *:所有可能的值
- ,:列表范围值,如"1,3,4"
- -:范围,如1-5代表"1,2,3,4,5"
- /:频率,如minute字段*/10代表每10分钟执行一次
命令 |
解释 |
45 22 * * * command |
每天22:45执行命令 |
0 17 * * 1 command |
每周一17:00执行命令 |
0 5 1-15 * * command |
每月1-15号5:00执行命令 |
40 4 * * 1-5 command |
每周1-5天4:40执行命令 |
*/20 5 1,15,24 * * command |
每月1,15,24号的5点每20分钟执行命令 |
0 0 1,15 * 1 command |
每月1,15号和每周1执行命令,day和week最好不要同时设置 |
45 22 * * * /scripts/test.sh |
每天22:45执行test.sh这个脚本 |
Linux at定时任务
一次性定时计划任务,at守护进程atd以以后台模式运行,每60s检查作业队列和作业时间,时间匹配则执行作业;首先要确保atd在运行ps -ef | grep atd
需要安装sudo apt install at
命令 |
解释 |
at 3pm + 2days |
创建2天后下午3点的定时任务 |
Ctrl+d |
结束at命令输入 |
atq |
查看定时任务 |
at -c id |
查看定时任务内容 |
at -r id |
取消定时任务 |
at now + 2 minutes |
创建2分钟后的定时任务 |
atrm id |
删除id的定时任务 |
Linux 网络
NAT模式:
- 虚拟机的网关是宿主机,通过dhcp获取ip
- 宿主机的网关是连接外网的路由器
- 和宿主机同一路由器下的另一台电脑不能ping虚拟机
- VMnet8只是接口,虚拟NAT设备、虚拟dchp服务器连到VMnat8接口实现联网
- NAT模式下的虚拟机
- 通过真实主机的ip访问外网
BRIDGE模式
- 虚拟机和宿主机的网关都是路由器,处于同一个网段,都通过路由器上网
- 虚拟机子网掩码、ip网段、网关、DNS一致
HOST-ONLY模式
- NAT模式去除虚拟NAT设备,使用VMnet1连接虚拟交换机与虚拟机通信
网卡配置:
- debian:/etc/network/interfaces
- centos:/etc/sysconfig/network-scripts/ifcfg-ens33
hosts(记录ip和hostname的映射关系):
- linux:/etc/hosts
- windows:C:\Windows\System32\drivers\etc\hosts
DNS(Domain Name System域名与ip映射)
浏览器先检查缓存有没有解析该域名,有则返回ip,没有则检查操作系统DNS解析器缓存
Debian命令 |
解释 |
ifconfig |
查看ip,net-tools套件的一部分,较旧的网络配置工具,需要安装sudo apt install net-tools |
ip addr |
查看ip,ip命令的一个子命令,更详细和全面 |
ip route show |
查看路由表条目 |
ifconfig eth0 up |
重启网卡,eth0是网卡名,有的是ens33,通过ifconfig查看 |
service networking restart |
重启网络 |
systemctl start nftables |
启动防火墙 |
systemctl stop nftables |
关闭防火墙 |
systemctl disable nftables |
禁用防火墙 |
systemctl restart nftables |
重启防火墙 |
systemctl status nftables |
查看当前状态 |
`nft list ruleset |
grep 'tcp dport 80'` |
`nft list ruleset |
grep 'tcp dport 8080'` |
nft add rule inet filter input tcp dport 8080 accept |
开放端口,add-port标识添加的端口 |
nft add rule inet filter input tcp dport {8083-8085} accept |
开放端口范围 |
nft delete rule inet filter input tcp dport 8083-8085 accept |
关闭端口 |
netstat |
查看网络状态 |
Linux UFW防火墙
命令 |
解释 |
ifup eth0 |
重启网卡 |
systemctl restart network |
重启网络 |
systemctl start firewalld |
启动防火墙 |
systemctl stop firewalld |
停止防火墙 |
systemctl disable firewalld |
禁用防火墙 |
firewall-cmd --reload |
重启防火墙 |
firewall-cmd --state |
查看防火墙当前的状态 |
firewall-cmd --query-port=80/tcp |
端口开放情况 |
firewall-cmd --permanent --list-ports |
查看开放的端口 |
firewall-cmd --permanent --add-port=8080/tcp |
开放端口 |
firewall-cmd --permanent --add-port=8083-8085/tcp |
开放端口范围 |
firewall-cmd --permanent --remove-port=8083-8085/tcp |
关闭端口 |
Linux 帮助命令
命令 |
解释 |
man ls |
获得帮助信息,例如获得ls命令的帮助信息 |
help cd |
获得shell内置命令的帮助信息 |
Linux 软链接(符号链接Symbolic Link)
存储目标文件或目录的路径,可以跨越不同的分区和文件系统创建,
命令 |
解释 |
sudo ln -s /opt/blender/blender /usr/local/bin/blender |
创建符号链接,实际目录 软链接 |
ls -l /usr/local/bin/blender |
查看符号链接信息 |
sudo rm /usr/local/bin/blender |
删除符号链接 |
Linux 硬链接(Hard Link)
一个文件系统中的多个文件名指向同一个数据块(inode),只能在同一个分区内创建,不能跨越不同的文件系统,当所有硬链接和文件本身被删除,数据才会被删除
命令 |
解释 |
ln source dist |
创建硬链接,实际文件 硬链接文件 |
Linux SSH远程登录
控制端安装ssh客户端,服务端安装sshd服务端,安装ssh客户端和服务端sudo apt install openssh-server
、重启sshsudo systemctl restart ssh
命令 |
解释 |
ssh username@ip |
远程登陆 |
logout orexit |
退出远程登陆 |
Linux 文件传输
rcp
目标主机需要事先打开rcp功能,把源主机加入到可信任主机列表中,不加密
命令 |
解释 |
rcp root@ip:home/cci/test.txt / |
将远程主机的我文件复制到本机 |
scp
secure copy,数据传输使用 ssh,和ssh 使用相同的认证方式
命令 |
解释 |
scp /home/cci/test.txt username@ip:/home/ |
把本机test.txt文件复制到远程主机指定目录下 |
scp -r username@ip:/home/cci/test.txt /home/cci |
从远程复制到本地,-r递归复制目录 |
ftp
安装sudo apt install ftp
命令 |
解释 |
ftp ip |
建立连接 |
get test.txt |
下载文件 |
put test.txt |
上传文件 |
delete test.txt |
删除文件 |
bye |
退出ftp |
wget
远程机器需要支持ftp服务
命令 |
解释 |
wget --ftp-user=USER --ftp-password=PASS ftp://www.abc.com/abc.zip |
下载文件 |
Linux wget下载文件
广泛使用的命令行工具,支持Windows,Linux和macOS,支持HTTP、HTTPS和FTP协议
命令 |
解释 |
wget -O rust.zip https://github.com/rust-lang/rust/archive/refs/tags/1.79.0.zip |
指定文件名下载,wget默认会以最后一个符合"/"的后面的字符来命令,本例不加-O会下载成1.79.0.zip |
wget -o download.log url |
指定下载信息到日志文件 |
wget -P /home/linux/Downloads url |
指定路径下载 |
wget -b url |
下载的过程中会显示进度条,包含(下载完成百分比,已经下载的字节,当前下载速度,剩余下载时间) |
wget -b url |
后台下载 |
wget -y url |
在执行操作时自动回答 "yes",省去用户确认步骤 |
wget -c url |
断点续传下载,下载失败可以再次执行恢复进度下载 |
wget --limit-rate=300k |
限速下载 |
wget --user-agent="Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.204 Safari/534.16" |
伪装代理下载 |
wget --spider url |
测试下载链接是否有效 |
wget --tries=40 url |
增加重试次数,wget默认重试20次连接下载文件 |
wget -i url.txt |
url.txt中保存了多个链接,-i批量下载文件 |
wget --reject=jpg url |
过滤拒绝指定格式下载 |
wget -r -A.pdf url |
递归下载所有pdf格式的文件 |
wget --ftp-user=USERNAME --ftp-password=PASSWORD url |
指定用户名和密码下载 |
wget -x url |
下载整个站点并创建和url服务器一模一样的目录 |
wget -l 2 url |
递归下载url所有目录和文件,但只下载2层,如果使用-r,url包含的其他网站的url也会被遍历,层层嵌套无法预期 |
wget -m url |
制作镜像站点 |
wget url --no-check-certificate |
跳过证书检查下载文件 |
rsync
安装apt install rsync
,更强大的scp
命令 |
解释 |
rsync -avz /tmp/ username@ip5:/home/ |
本地复制到远程服务器 |
rsync -avzh username@ip:/home/ /home/ |
下载远程文件到本地 |
Linux history历史命令
命令 |
解释 |
history |
列出全部历史命令 |
history 4 |
列出最近的四条命令 |
history -c |
将目前shell中的所有history命令消除,对命令历史文件没有影响 |
history -w |
将本次登录的命令写入命令历史文件中, 默认写入~/.bash_history |
history -r |
将命令历史文件中的内容读入到目前shell的history记忆中 |
Linux date时间日期
命令 |
解释 |
date |
显示当前的系统时间和日期 |
date +%Y |
显示年份 |
date +%m |
显示月份 |
date +%d |
显示哪天 |
date "+%Y-%m-%d %H:%M:%S" |
指定格式显示2024-06-20 16:36:56 |
date -r /etc/hosts |
文件最后修改时间 |
TZ='America/New_York' date |
更改时区 |
date -d "2024-6-20 09:12:15" |
操作具体日期 |
date --set="20240620 12:30" |
设置或更改Linux中的时间 |
date --date="06/20/2024" |
显示给定的日期字符串作为日期格式 |
date --date="2 year ago" |
当前时间2年前的时间 |
date --date="4 day" |
当前时间四天前的时间 |
date --date="10 sec ago" |
当前时间10秒前的时间 |
date --date="next monday" |
未来周一的时间 |
date --date="10 day" |
未来10天的时间 |
date --date="tomorrow" |
未来一天的时间 |
Linux find
命令 |
解释 |
find / -name a.c |
指定文件名查找 |
find -type f |
指定文件类型查找,f普通文件,d目录,l符号链接 |
find -user cci a.c |
按文件所有者查找 |
find -group cci a.c |
按文件所属组查找 |
find /home -size +1M |
查找 /home 目录下大于 1MB 的文件,+ 或 - 表示大于或小于,单位:c (字节)、w (字数)、b (块数)、k (KB)、M (MB)或 G (GB) |
find / -amin n |
查找在 n 分钟内被访问过的文件 |
find /path/to/search -atime -7 |
查找过去 7 天内被访问的文件 |
find / -cmin n |
查找在 n 分钟内状态发生变化的文件(例如权限) |
find / -ctime n |
查找在 n*24 小时内状态发生变化的文件(例如权限) |
find /var/log -mtime +7 |
查找 /var/log 目录下7天前修改过的文件 |
find / -mmin n |
查找在 n 分钟内被修改过的文件 |
+n |
查找比n天前更早的文件或目录 |
-n |
查找在n天内更改过属性的文件或目录 |
n |
查找在n天前(当天)更改过属性的文件或目录 |
Linux locate
运行前必须updatedb
创建locate数据库,即/var/lib/mlocate/mlocate.db
,Linux系统自动创建这个数据库,并且每天自动更新一次,debian中需要安装sudo apt install mlocate
- -b, --basename -- 仅匹配路径名的基本名称
- -c, --count -- 只输出找到的数量
- -d, --database DBPATH -- 使用 DBPATH 指定的数据库,而不是默认数据库 /var/lib/mlocate/mlocate.db
- -e, --existing -- 仅打印当前现有文件的条目
- -1 -- 如果 是 1.则启动安全模式。在安全模式下,使用者不会看到权限无法看到 的档案。这会始速度减慢,因为 locate 必须至实际的档案系统中取得档案的 权限资料。
- -0, --null -- 在输出上带有NUL的单独条目
- -S, --statistics -- 不搜索条目,打印有关每个数据库的统计信息
- -q -- 安静模式,不会显示任何错误讯息。
- -P, --nofollow, -H -- 检查文件存在时不要遵循尾随的符号链接
- -l, --limit, -n LIMIT -- 将输出(或计数)限制为LIMIT个条目
- -n -- 至多显示 n个输出。
- -m, --mmap -- 被忽略,为了向后兼容
- -r, --regexp REGEXP -- 使用基本正则表达式
- --regex -- 使用扩展正则表达式
- -q, --quiet -- 安静模式,不会显示任何错误讯息
- -s, --stdio -- 被忽略,为了向后兼容
- -o -- 指定资料库存的名称。
- -h, --help -- 显示帮助
- -i, --ignore-case -- 忽略大小写
- -V, --version -- 显示版本信息
命令 |
解释 |
locate a.c |
查找文件 |
locate /etc/sh |
查找etc 目录下所有以sh开头的文件 |
Linux which
查看指令在哪个目录下
命令 |
解释 |
which ls |
查看ls指令在哪个目录下 |
whiich java |
查看java指令在哪个目录下 |
Linux grep和管道符|
过滤查找
命令 |
解释 |
grep hello a.txt |
在文件a.txt中查找字符串"hello",并打印匹配的行 |
grep test *txt |
查找后缀有txt字样的文件中且包含test字符串的文件 |
`cat a.c |
grep -i test` |
Linux 磁盘
命令 |
解释 |
`mount |
column -t` |
sudo fdisk -l |
查看硬盘分区情况 |
swapon -s |
查看所有交换分区 |
df -h |
human-readable,以人类可读的格式显示磁盘空间使用情况 |
du -h |
查看硬盘占用情况 |
du -s /home |
查看自定目录占用大小 |
du -a |
包含文件显示 |
du --max-depth=2 |
子目录深度 |
du -c |
增加显示汇总值total |
du -h -ac --max-depth=2 /home |
以人类可读的方式显示/home目录两层深度且包含文件的占用情况并统计总数 |
`dmesg |
grep vda` |
sudo iotop |
查看硬盘I/O读取状态,需要安装sudo apt install iotop |
inxi -D |
查看硬盘硬件情况,需要安装sudo apt install inxi |
Linux 分区
无论如何分区,linux文件系统的结构仍然是根分区/
和其下的/bin
、/boot
、/etc
、/dev
等等,通过挂载将这些目录分配给不同的分区,只改变了数据存储的分区位置;
- 在linux中无论你的/opt目录挂载到哪个分区,都可以通过
cd /opt
进入,文件系统的目录结构不变
- 在window中,如果你在C盘要进入D盘的opt目录,就要先切换到D盘
D:cd opt
,很明显C盘和D盘不仅分区不同目录结构也不同
命令 |
解释 |
lsblk orlsblk -f |
查看挂载情况 |
fdisk /dev/vdb |
开始分区,vdb是磁盘名 |
mount /dev/vdb /newdisk |
挂载vdb磁盘 |
umount /dev/vdb |
卸载 |
mkfs -t ext4 /dev/vdb |
格式化vdb磁盘 |
Linux 压缩与解压
命令 |
解释 |
gzip hello.txt |
压缩成.gz,不创建新文件 |
gunzip hello.txt.gz |
解压 |
zip hello.zip hello.txt |
压缩成hello.zip,创建新文件 |
zip -r /home/hello.txt |
压缩目录 |
unzip -d /tmp hello.zip |
解压,-d指定目录 |
tar -c hello.txt |
打包成.tar |
tar -x archiver.tar |
解压 |
tar -v hello.txt |
显示详细信息 |
tar -f a hello.txt |
指定压缩后的文件名 |
tar -z 4 hello.txt.tar.gz |
打包同时压缩,压缩率为4,压缩率(1-9),级别越高压缩时间越长 |
tar -czf documents.tar.gz /home/user/documents |
压缩成名为documents.tar.gz 的压缩归档文件 |
tar --list -f documents.tar |
列出压缩文件内容 |
tar -cf documents.tar --exclude='*.txt' /home/user/documents |
打包时排除文件 |
tar --preserve-permissions -cf documents.tar /home/user/documents |
打包时保留权限和所有权信息 |
tar --atime-preserve -cf documents.tar /path/to/backup |
打包时保留时间戳 |
tar -zcvf documents.tar.gz /home |
压缩成tar.gz |
tar -zxvf documents.tar.gz |
解压 |
z |
gzip,.tar.gz |
j |
bzip2,.tar.bz2 |
J |
xz,.tar.xz |
Linux挂载
命令 |
解释 |
mount /dev/vdb /mnt |
将/dev/vdb挂载到/mnt下,vdb是磁盘名 |
umount /dev/vdb |
卸载 |
Linux进程
命令 |
解释 |
top |
实时显示当前系统中占用资源最多的一些进程,q 退出r 修改优先级k 向进程发送终止信号P 按CPU使用率排序M 按内存使用率排序 |
top -d 3 |
每隔3秒更新 |
top -i |
不显示闲置或僵尸进程 |
top -p PID |
监控指定进程 |
ps |
正在允许的进程 |
ps a |
显示现行终端机下的所有程序,包括其他用户的程序 |
ps -a |
显示当期终端所有运行中/激活进程,包括其他用户的程序 |
ps -aux |
显示所有用户的所有进程 |
ps -ef |
以完整格式显示所有进程 |
ps -e --forest |
以树形结构显示进程关系 |
pstree |
以树形结构显示进程关系 |
pstree -u |
以树形结构显示当前用户进程关系 |
nice 3 -p vim |
使vim优先级+3 |
kill PID |
根据PID终止进程 |
killall name |
根据进程名终止进程 |
kill -1 PID |
或--hangup,挂起信号,通常用于重启或重新加载进程 |
kill -2 PID |
或--interrupt,中断信号,通常由Ctrl+C发送给前台进程 |
kill -3 PID |
或--quit,退出信号,通常由Ctrl+\发送给前台进程 |
kill -9 PID |
强制杀死该进程 |
kill -15 PID |
或--terminate,默认的终止信号,要求进程优雅地退出 |
kill-17 PID |
或-stop,暂停进程的执行,可以使用kill -CONT恢复执行 |
kill -18 PID |
或--continue,恢复被停止的进程的执行 |
pkill -9 PID |
根据进程名强制杀死该进程 |
PID:进程号 USER:用户名 PR:优先级(-20高-19低) NI:Nice值(-20高-19低) VIRT:虚拟内存 RES:物理内存 SHR:共享内存 S:状态 %CPU:CPU占用 %MEM:内存使用率 TIME+:累积CPU时间 COMMAND:启动进程的命令或可执行文件名字
进程状态含义
命令 |
解释 |
S |
等待态 |
T |
停止态 |
R |
运行态 |
Z |
僵尸态 |
D |
不可被中断的等待态 |
X |
死亡态 |
I |
闲置在内核的进程 |
l |
拥有子线程的进程 |
< |
高优先级的进程 |
N |
低优先级的进程 |
+ |
运行在前台的进程 |
Linux 守护进程(service)
服务(service) 本质就是进程,但是是运行在后台的,通常都会监听某个端口,等待其它程序的请求。debian使用service
,Centos使用systemctl
,本质上是执行启动脚本
命令 |
解释 |
service mysqld start |
启动服务 |
service mysqld stop |
停止服务 |
service mysqld restart |
重启服务 |
service mysqld reload |
重载服务 |
service mysqld status |
查看服务状态 |
apt和apt-get是dpkg的前端,debian默认包管理器,ubuntu也是这个,debian是ubuntu的爹
命令 |
解释 |
apt-get |
传统工具,命令行没有颜色,稳定,用于shell脚本 |
apt |
后起之秀,带进度条和颜色,信息输出更友好 |
sudo apt update |
列出所有可更新的软件清单 |
sudo apt-get upgrade |
升级软件包,不升级内核版本 |
sudo apt-get dist-upgrade |
升级内核版本 |
sudo apt upgrade |
升级软件包,升级内核版本 |
sudo apt update && sudo apt upgrade -y |
更新清单并升级软件包,-y允许所有安装操作 |
apt list --upgradeable |
列出可更新的软件包及版本信息 |
sudo apt full-upgrade |
升级软件包,升级前先删除需要更新软件包 |
sudo apt install rpm |
安装指定的软件 |
sudo apt update rpm |
更新指定的软件 |
sudo apt show rpm |
显示软件包具体信息 |
sudo apt remove rpm |
删除软件包留下配置文件 |
sudo apt purge rpm |
移除软件包及配置文件 |
sudo apt autoremove |
清理不再使用的依赖和库文件 |
sudo apt search rpm |
查找软件包 |
apt list --installed |
列出所有已安装的包 |
apt list --all-versions |
列出所有已安装的包的版本信息 |
Linux rpm软件包管理(RedHat Package Manager)
RedHat Linux默认包管理器,其他linux下了也能用
选项 |
说明 |
-i, --install |
安装一个包 |
-v |
显示详细的信息 |
-h |
打印,显示安装进度 |
-U , --update |
升级一个包 |
-e , --erase |
卸载一个包 |
-q , --query |
查询一个包 |
-qi , --queryInfo |
查询包信息 |
-v , --verbose |
显示详细信息 |
-V , --verify |
校验一个包 |
-R |
列出依赖项 |
-F , --Flush |
安装、升级或删除软件包时跳过依赖项检查 |
-test , |
模拟指令但不执行 |
-nodeps , |
模拟指令但不执行 |
首先有rpm包才能安装
命令 |
解释 |
rpm -ivh vim.rpm |
安装包 |
rpm -Uvh vim.rpm |
升级包 |
rpm -e vim |
删除包 |
rpm -qa |
显示所有已安装的rpm包 |
rpm -qip vim |
查询软件包的信息 |
rpm -qpR vim.rpm |
查询包需要的依赖项 |
rpm -ql vim |
显示已安装软件的所有文件 |
Linux yum包管理器(Yellow dog Updater, Modified)
Centos默认包管理器,yum是rpm的前端程序,rpm软件包形式的管理虽然方便,但是需要手工解决软件包的依赖关系,yum增加了自动解决依赖关系的方案
命令 |
解释 |
yum check-update |
列出所有可更新的软件清单 |
yum update |
更新所有软件 |
yum install vim |
安装指定的软件 |
yum update vim |
更新指定的软件 |
yum list |
列出所有可安裝的软件清单 |
yum remove vim |
删除软件包 |
yum search vim |
查找软件包 |
yum clean packages |
清除缓存目录下的软件包 |
yum clean headers |
清除缓存目录下的 headers |
yum clean oldheaders |
清除缓存目录下旧的 headers |
yum clean all |
|
Linux 系统信息
Linux 内存
命令 |
解释 |
free -g |
以G为单位输出内存的使用量,-g为GB,-m为MB,-k为KB,-b为字节 |
free -t |
查看所有内存的汇总 |
free -m |
查看当前内存使用信息 |
cat /proc/meminfo |
通过/proc文件查看内存信息 |
`dmesg |
grep mem` |
vmstat |
查看虚拟内存统计信息 |
grep MemTotal /proc/meminfo |
查看内存总量 |
grep MemFree /proc/meminfo |
查看空闲内存量 |
`dmidecode |
grep -i mem` |
Linux 显卡
命令 |
解释 |
`lspci |
grep -i 'VGA'` |
`lspci |
grep -i nvidia` |
`sudo dmesg |
grep -i 'VGA'` |
`glxinfo |
grep OpenGL` |
Linux 声卡