常用 Linux 指令

常用 Linux 指令

lsb_release -a 查看Linux环境下安装的系统版本


pwd 查看当前所在目录
ls 列出当前目录下的文件及文件夹。绿色是可执行文件,蓝色是文件夹,白色是文件。
mkdir 目录名 创建目录
touch test.c 创建文件
mv 文件/文件夹 要移动到的目录 mv 原文件名 新文件名 还可以改文件的名字
cp 文件 目录
cp -r 文件夹 文件夹 要移动到哪 如果要copy的不止一个文件,加上 -r 递归拷贝
rm file1 file2 file3 ... 可以将写的文件全部移除。
rm *.filesuffix 以后缀名的方式删除,指明的后缀匹配文件全部删除
rmdir 目录 可以删除空目录
rm -r 目录 递归删除目录中的文件
rm -rf mulu 递归删除目录 且强制删除不被提醒
tree 以树的形式来展示当前文件夹中的文件。目录树
tar -xzvf file.tar.gz 解压 .tar.gz 文件

which exe 查看 可执行文件exe 的绝对路径


动态链接 环境配置相关

ldd exe_name 查看可执行程序的动态库依赖关系
env 输出当前系统环境下的环境变量 。环境变量的作用:当系统去运行一个程序 但又没有给出程序的绝对路径时,系统在当前目录下即相对路径下找不到程序时,就会去 path 环境中去找看有没有程序的路径。
export LD_LIBRARY_PATH=$LD_LIBRARY:拼接上动态库的绝对路径 设置环境变量,跟环境名,值的部分先用 $把原来的环境变量获取到,在用 :在原来的环境变量的基础上拼接新的变量。 LD_LIBRARY_PATH 是在当前终端中配置的,临时的,当终端重启后,就不在有效,动态加载器在定位时就会找不到该动态库。
永久的环境变量配置 动态库的绝对位置:用户级别/系统级别的环境变量配置。
source ./.bashrc 每次更改完环境变量后 确定一下
echo $环境名 来查看环境中的变量


vim 命令

cat 文件名 查看文件中的内容
vim 文件名 创建一个文件并编辑
:e 更新内容
:w vim 编辑器下 保存但不退出
:wq 保存并推出
:q 推出
:q! 强制退出
:e! 放弃所有修改,到达上次保存的状态处
shift+g 调到最后一行
set nu 设置行号


IO 函数相关

man 查看操作手册的
man 2 open linux 下IO函数的一个说明文档
man 3 fopen 标准C的IO函数说明
man 3 perror 打印errorno对应的错误描述的说明文档
ln -s 源文件 生成的软链接文件 软链接文件指向源文件,
/etc/passwd /etc/group 下存放着 所有用户对应的 uid 和所在组的 gid
useradd 用户名 添加新的用户
id 用户名 查看用户的 uid 和 gid


进程相关

ps aux / ajx aux 可以查看进程的CPU,内存的 当前 占用信息;而 ajx 可以查看到父进程和进程组的一些信息。

  • a 显示终端上的所有进程,包括其他用户的进程
  • u 显示进程的详细信息
  • x 显示没有控制终端的进程
  • j 列出与作业控制相关的信息

其中的 STAT 参数含义:
D 不可中断 Uninterruptible(usually IO)
R 正在运行,或在队列中的进程
S(大写) 处于休眠状态
T 停止或被追踪
Z 僵尸进程
W 进入内存交换(从内核2.6开始无效)
X 死掉的进程
< 高优先级
N 低优先级
s 包含子进程
+ 位于前台的进程组

top [-d 信息更新的时间间隔] 动态的显示进程信息

可以按以下按键对显示的结果进行排序:
M 根据内存使用量排序
P 根据 CPU 占有率排序
T 根据进程运行时间长短排序
U 根据用户名来筛选进程
K 输入指定的 PID 杀死进程

tty 查看当前终端设备
echo $$ 查看当前进程的 pid
kill pid 杀死进程号 pid 指定的进程。

  • 想要 kill 掉自己所在的进程 kill -9 pid
  • kill -l 可以查看 kill 中的所有信号。-9 就是 9 所代表的宏指令

killall name 根据进程名杀死进程

./xxxx & 进程在后台运行,但在终端打印
fg 将后台进程切换到前台
ctrl + z 将进程切换到后台


GDB 调试状态下的常用指令

gcc xxx.c -o xxx.exe -g 加 -g生成带 调试信息的可执行文件
gdb xxx.exe 进入到调试模式
quit 退出调试模式

l 调试模式下显示可执行程序的代码

  • l 行号 查看 指定行号附近的代码
  • l 函数名 查看 指定函数附近的代码
  • l 文件名:行号 查看 指定文件的指定行号附近的代码
  • l 文件名:函数名 查看 指定文件指定函数附近的代码

b 加断点

  • b 行号 在 指定行加断点
  • b 函数名 在 指定函数加代码
  • b 文件名:行号 在指定文件的指定行加断点
  • b 文件名:函数名 在 指定文件指定函数处加断点

i b 查看断点信息
d 断点编号 删除断点编号指定的断点

start 停到程序入口
r 直到第一个断点处才停
c 继续运行到下一个断点处
n 向下执行一行代码

set follow-fork-mode parent|chile 设置当创建子进程时 是调试父进程还是子进程
show follow-fork-mode 查看调试的是父进程还是子进程

set detach-on-fork on|off 设置当子进程被创建后,子进程是否自动脱离父进程执行,因为本质上每个进程是独立运行的,需要的资源都被分配好后,即可等待时间片来执行。而设置 detach-on-fork off 后,子进程创建后不脱离父进程,会进入阻塞态。
show detach-on-fork 查看当前的进程是否自动脱离父进程情况

info inferiors 查看调试的进程
inferior id 切换当前调试的进程
detach inferiors id 使进程id 脱离GDB调试

段错误 调试,通过查看 core文件来找问题

  1. 先查看 core file size:ulimit -a
  2. 根据提示修改 core file size: ulimit -c unlimited
  3. 编译生成 core文件:gcc xxx.c -o xxx -g 需要调试信息
  4. 进入 gdb调试:gdb xxx
  5. 输入指令 core-file core 即可

共享内存操作命令

ipcs
ipcs -a 打印当前系统中所有进程间通信方式的信息(消息队列,共享内存段,信号量数组)
ipcs -m 打印共享内存的消息
ipcs -q 打印消息队列的消息
ipcs -s 打印信号量数组的消息

每种通信方式的表示 都由键和 id(shmid/msqid/semid) 组成
ipcrm
ipcrm -M shmkey 通过 键key 来移除共享内存段,这个移除并不能真正的将其内存段,而是将其标记为删除,当状态为0 时才会真正删除
ipcrm -m shmid 通过 id来移除共享内存段
ipcrm -Q msqkey
ipcrm -q maqid
ipcrm -S semket
ipcrm -s semid

线程相关

ps -Lf pid 查看指定进程(pid) 的线程(LWP)有哪些。
getconf GNU_LIBPTHREAD_VERSION 查看当前 pthread 库版本

网络相关

netstat 查看网络相关信息

  • -a 所有的 socket
  • -p 显示正在使用的 socket 程序的名称
  • -n 直接显示 IP地址,而不通过域名服务器
  • 例子 netstat -anp | grep my_port 显示端口号为 port 的 socket信息
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值