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讲