Linux系统常用命令
特此说明: 刘超的趣谈linux操作系统是比较重要的参考资料,本文大部分内容和图片来源于这个专栏。
1 运行程序
通过命令行让Linux执行程序,有以下几种方式,也决定进程已什么方式运行。
1、交互式运行
$ ./filename # 交互式运行,Ctrl+C可以结束这个在执行的进程
2、后台方式运行
# 脱离终端后台运行,并将log输出到xxx.outfile文件。
# nohup命令使终端关闭也不影响进程(进程正常是终端进程fork过来的,父进程挂起....), 2&>1表示将标准输出合并错误输出到xxx.outfile,&设置进程后台运行
$ nohup ./command > xxx.outfile 2&>1 & # 后台运行进程
# ps -ef |grep 关键字过滤出进程信息,通过awk '{print $2}'找出进程id,然后通过xargs命令传递给kill -9 ,最终干掉这个进程
ps -ef |grep 关键字 |awk '{print $2}'|xargs kill -9 # kill 这个进程的方法
3、服务方式运行
# systemctl工具管理服务
$ systemctl enable service-name
$ systemctl start service-name
$ systemctl stop service-name
.....
PS 一个小问题
Q: 后台运行的进程和服务都是可以脱离终端独立存在的,那么两者有什么区别呢? A:查到 系统服务的概念,总结两点区别 1、服务是系统功能的进程;进程是用户的进程。 2、服务不会与用户交互,在后台默默运行(这点和后台进程一样)
2 安装软件
无论是Ubuntu系还是CentOS系的Linux发行版,总有几种安装软件的方式,下载安装包、通过软件管家、直接下载压缩包或者通过源码编译。1、下载安装包安装
$ dpkg -i xxxx.deb # 如果是chentos的话,使用rpm命令
2、通过软件管家安装
$ apt-get install xxxx # 如果是chentos的话,使用yum命令
3、下载压缩包安装
export PATH=XXX/bin:PATH #将可执行文件bin添加到PATH变量,可将这个命令配置在~/.bashrc文件,每次重启Linux加载这个文件
4、源码编译安装
# 对当前环境评估,--prefix指定安装路径
$ ./configure --prefix=/usr/local/program
# 编译生成安装包
$ make
# 安装软件
$ make install
3 管理进程
查看进程(静态) | ps |
查看进程树 | ptree |
查看进程(动态) | top |
设置进程的优先级(启动前) | nice -n ./test |
调整进程优先级 | renice -n <进程PID> |
设置进程为后台运行(启动前) | ./test & |
调整前台进程为后台进程并挂起 | Ctrl +Z |
调整后台进程为前台进程并执行 | step1: jobs |
step2: fg <序号> | |
调整后台进程为后台进程并挂起 | step1: jobs |
step2: bg <序号> | |
向进程发送信号 (立即杀死该进程) | kill -9 <进程PID> |
设置进程为后台运行,并且脱离当前终端(启动前) | nohup ./test & |
4 管理网络
查看网卡状态 | ifconfig |
查看网关 | route -n |
修改网络配置 | ifconfig <接口> <ip地址> [netmask <子网掩码>] |
添加路由 | route del/add default gw <网关ip> |
故障排查 - 目标主机是否畅通 | ping www.baidu.com |
故障排查 - 数据包经过中间路由的状态 | traceroute -w 1 www.baidu.com |
故障排查 - 数据包经过中间路由的状态(内容更加丰富) | mtr |
故障排查 - 查看dns解析 | nslookup www.baidu.com |
故障排查 - 目标主机端口是否畅通 | telnet www.baidu.com 80 |
故障排查 - 网络抓包 | tcpdump -i any -n port 80 and host 10.0.0.1 |
故障排查 - 查看服务监听地址 | netstat -ntpl |
查看网络管理服务 | systemctl list-unit-files NetworkManager.service |
查看网卡配置文件 | NA |
查看主机名配置文件 | /etc/hostname |
查看主机名到网络地址映射文件(如果hostname发生改变) | /etc/hosts |
5 管理存储
查看内存(静态) | free -m |
查看内存(动态) | top |
查看磁盘分区 | fdisk -l |
查看分区使用和挂载信息 | df -h <文件名> |
查看文件占用(实际) | du <文件名> |
查看文件占用(实际+空洞) | ls -lh <文件名> |
复制和转换一个文件 | dd if=<输入文件> bs=4M count=10 of=<输出文件> |
查看文件的inode | ls -i |
创建符号链接文件(产生新的inode关联) | ln -s <源文件> <目标文件> |
创建硬链接文件(和原有的inode关联) | ln <源文件> <目标文件> |
获取文件ACL权限 | getfacl |
设置文件ACL权限 | setfacl -m u:<用户名>:rwx <文件名> |
setfacl -x u:<用户名> <文件名> | |
设置磁盘分区和格式化 | fdisk |
mkfs | |
设置分区挂载到文件系统 | mount |
/etc/fstab | |
设置磁盘阵列(RAID技术) | mdadm |
6 Shell脚本
1、编写
#! /bin/bash
xxxx
2、执行
# 启动子进程区执行
bash ./demo
./demo
# 当前进程下执行
source ./demo.sh
. demo.sh
9 References
- 快速上手几个Linux命令:每家公司都有自己的黑话
- image.png
- Linux实战技能100讲