轻松get!Linux Strace安装指南 (linux strace 安装)

随着互联网的不断发展,计算机程序开发越来越受到人们的关注,Linux作为一个免费的开源系统,被广泛的应用在服务器和嵌入式设备上。在Linux上,开发人员需要通过命令行工具或者图形化操作界面完成开发和调试工作。而Strace是Linux系统上一种非常重要的命令行工具,它能够帮助开发人员诊断程序运行过程中的错误,定位程序中的瓶颈,可以给程序员节约大量的时间和精力。

什么是Strace?

Strace是一种在Linux系统上运行的命令行工具,它能够对进程进行跟踪和监视,记录进程的系统调用以及所发生的错误。使用Strace可以帮助程序员:

1. 分析程序运行过程中发生的错误和异常,快速诊断问题并定位错误。

2. 在调试程序运行速度时,找到程序中的瓶颈并进行优化。

3. 确认程序是否按照预期执行。

Strace在Linux系统上非常常用,可以帮助程序员更好地了解程序运行过程中的细节,提高程序的调试效率和可靠性。

如何安装Strace?

安装Strace非常简单,只需要执行以下几个命令即可完成:

$ sudo apt-get update

$ sudo apt-get install strace

在终端中输入以上两个命令后,系统会自动更新软件包信息并安装Strace,安装过程依据网络速度,可能需要一些时间。对于安装过程中出现错误,可以执行以下命令修复:

$ sudo apt-get -f install

安装完成后,可以输入以下命令检查Strace是否已经安装成功:

$ strace –version

如果系统正确输出了Strace的版本信息,则表示Strace已经安装成功。

如何使用Strace?

在使用Strace之前,需要先了解Strace的基本用法。通常情况下,我们可以通过以下两种方式使用Strace:

1. 在启动进程的时候加上strace,例如:

$ strace -o output.txt ./a.out

2. 在已经启动的进程上运行Strace:

$ strace -p process_id

其中,-o选项表示将输出结果保存到指定的文件中,process_id表示要跟踪的进程的ID。在启动Strace后,可以通过Ctrl + C快捷键停止跟踪,输出结果将会保存到指定文件中。

通过Strace,我们可以获取进程运行的系统调用列表,可以了解进程的所有系统调用以及调用的结果。例如,在以下C程序中,使用了fopen打开文件,fwrite向文件中写入数据,使用fclose关闭文件。

#include

int mn()

{

FILE *fp;

char str[] = {“Hello world!”};

fp = fopen(“sample.txt”,”w”);

if(fp == NULL){

perror(“Error Message: “);

return -1;

}

fwrite(str,1,sizeof(str),fp);

fclose(fp);

return 0;

}

我们可以使用以下Strace命令对程序进行跟踪:

$ strace ./a.out

输出结果如下:

execve(“./a.out”, [“./a.out”], 0x7fff3c16b310 /* 42 vars */) = 0

brk(NULL) = 0x564a87503000

access(“/etc/ld.so.nohwcap”, F_OK) = -1 ENOENT (No such file or directory)

access(“/etc/ld.so.preload”, R_OK) = -1 ENOENT (No such file or directory)

openat(AT_FDCWD, “/etc/ld.so.cache”, O_RDON|O_CLOEXEC) = 3

fstat(3, {st_mode=S_IFREG|0644, st_size=50348, …}) = 0

mmap(NULL, 50348, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f6a66679000

close(3) = 0

access(“/etc/ld.so.nohwcap”, F_OK) = -1 ENOENT (No such file or directory)

access(“/etc/ld.so.preload”, R_OK) = -1 ENOENT (No such file or directory)

openat(AT_FDCWD, “/lib/x86_64-linux-gnu/libc.so.6”, O_RDON|O_CLOEXEC) = 3

Strace可以轻松地捕捉程序运行过程中的系统调用,例如openat,fwrite等等。如果程序在运行过程中出现了错误或异常,我们可以通过Strace快速定位错误发生的位置,找到程序中的瓶颈并进行优化。

相关问题拓展阅读:

系统之家Linux查看占用内存的进程资源的方法怎么办

1、查看链敬悉进程的线程:

  ps -eLf|egrep ‘gateserver|UID’

  2、跟踪线程调用:

  strace -p 15530

  3、统计线程中函数的调用小号CPU时间:

  strace -pc

  strace -po out.file #输出到out.file文件

  4、只显示recv函数的调用:

  strace -pf -F -e recv

  5、棚乎gdb调试线程:稿纳

  gdb -p pid

  6、查看线程打开的文件描述符:

  lsof -p pid

linux命令主要有哪几种?

1.Linux内建命令: 由shell程序自带的命令,最常见的有cd、pwd等。

使用type命令即可查看命令属于哪种,比如:

#type cd

cd is a shell builtin ————》看到这个提示的,说明此命令是内建命令

2.Linux外部命令: 本身是一个独立的可执行程序文件,命令名即为程序文件名,常见的有ls、mv、ps等。

查找方式:通过shell的内置的环境变量PATH中指定的路径进行查找;

#echo $PATH

/usr/lib64/qt-3.3/bin:/usr/local/in:/usr/local/bin:/in:/bin:/usr/in:/usr/bin:/root/binPATH路径

通过使用which来查看命令所在的路径,比如:

#which ps

/bin/ps ————》说明此命令是在bin目录下 更多介绍请查看“Linux命令大全”。

Linux运维人员必会的120个命令

来自《跟老男孩学Linux运维:核心系统命令实战》一书

前言

第1章 Linux命令行简介 / 1

1.1Linux命令行概述 / 1

1.2在Linux命令行下查看命令帮助 / 4

1.3Linux shutdown reboot halt / 9

关机:

shutdown -h now

halt

init 0

第2章 文件和目录操作命令 / 13

2.1pwd:显示当前所在的位置 / 13

2.2cd:切换目录 / 16

2.3tree:以树形结构显示目录下的内容 / 18

2.4mkdir:创建目录 / 22

2.5touch:创建空文件或改变文件的时间戳属性 / 27

2.6ls:显示目录下的内容及相关属性信息 / 30

2.7cp:复制文件或目录 / 39

2.8mv:移动或重命名文件 / 42

2.9rm:删除文件或目录 / 45

2.10rmdir:删除空目录 / 48

2.11ln:硬链接与软链接 / 49

2.12readlink:查看符号链接文件的内容 / 54

2.13find:查找目录下的文件 / 55

2.14xargs:将标准输入转换成命令行参数 / 68

2.15rename:重命名文件 / 71

2.16basename:显示文件名或目录名 / 72

2.17dirname:显示文件或目录路径 / 72

2.18chattr:改变文件的扩展属性 / 73

2.19lsattr:查看文件扩展属性 / 75

2.20file:显示文件的类型 / 76

2.21md5sum:计算和校验文件的MD5值 / 77

2.22chown:改变文件或目录的用户和用户组 / 80

2.23chmod:改变文件或目录权限 / 81

2.24chgrp:更改文件用户组 / 85

2.25umask:显示或设置权限掩码 / 86

2.26老男孩从新手成为技术大牛的心法 / 90

第3章 文件过滤及内容编辑处理命令 / 91

3.1cat:合并文件或查看文件内容 / 91

3.2tac:反向显示文件内容 / 103

3.3more:分页显示文件内容 / 104

3.4less:分页显示文件内容 / 107

3.5head:显示文件内容头部 / 109

3.6tail:显示文件内容尾部 / 111

3.7tailf:跟踪日志文件 / 114

3.8cut:从文本中提取一段文字并输出 / 115

3.9split:分割文件 / 117

3.10paste:合并文件 / 118

3.11sort:文本排序 / 123

3.12join:按两个文件的相同字段合并 / 127

3.13uniq:去除重复行 / 129

3.14wc:统计文件的行数、单词数或字节数 / 131

3.15iconv:转换文件的编码格式 / 133

3.16dos2unix:将DOS格式文件转换成UNIX格式 / 134

3.17diff:比较两个文件的不同 / 135

3.18vimdiff:可视化比较工具 / 138

3.19rev:反向输出文件内容 / 139

3.20tr:替换或删除字符 / 140

3.21od:按不同进制显示文件 / 143

3.22tee:多重定向 / 145

3.23vi/vim:纯文本编辑器 / 147

3.24老男孩逆袭思想:做Linux运维的多个好处 / 152

第4章 文本处理三剑客 / 153

4.1grep:文本过滤工具 / 153

4.2sed:字符流编辑器 / 159

4.3awk基础入门 / 165

第5章 Linux信息显示与搜索文件命令 / 176

5.1uname:显示系统信息 / 176

5.2hostname:显示或设置系统的主机名 / 178

5.3dmesg:系统启动异常诊断 / 179

5.4stat:显示文件或文件系统状态 / 181

5.5du:统计磁盘空间使用情况 / 183

5.6date:显示与设置系统时间 / 186

5.7echo:显示一行文本 / 190

5.8watch:监视命令执行情况 / 193

5.9which:显示命令的全路径 / 195

5.10whereis:显示命令及其相关文件全路径 / 196

5.11locate:快速定位文件路径 / 197

5.12updatedb:更新mlocate数据库 / 199

5.13老男孩逆袭思想:新手在工作中如何问问题不会被鄙视 / 200

第6章 文件备份与压缩命令 / 201

6.1tar:打包备份 / 201

6.2gzip:压缩或解压文件 / 208

6.3zip:打包和压缩文件 / 211

6.4unzip:解压zip文件 / 212

6.5scp:远程文件复制 / 214

6.6rsync:文件同步工具 / 216

6.7老男孩逆袭思想:新手如何高效地提问 / 220

第7章 Linux用户管理及用户信息查询命令 / 222

7.1 useradd:创建用户 / 222

7.2usermod:修改用户信息 / 227

7.3userdel:删除用户 / 229

7.4groupadd:创建新的用户组 / 230

7.5groupdel:删除用户组 / 231

7.6passwd:修改用户密码 / 232

7.7chage:修改用户密码有效期 / 237

7.8chpasswd:批量更新用户密码 / 238

7.9su:切换用户 / 240

7.10visudo:编辑sudoers文件 / 242

7.11sudo:以另一个用户身份执行命令 / 244

7.12id:显示用户与用户组的信息 / 248

7.13w:显示已登录用户信息 / 249

7.14who:显示已登录用户信息 / 250

7.15users:显示已登录用户 / 252

7.16whoami:显示当前登录的用户名 / 253

7.17last:显示用户登录列表 / 253

7.18lastb:显示用户登录失败的记录 / 254

7.19lastlog:显示所有用户的最近登录记录 / 255

第8章 Linux磁盘与文件系统管理命令 / 257

8.1fdisk:磁盘分区工具 / 257

8.2partprobe:更新内核的硬盘分区表信息 / 265

8.3tune2fs:调整ext2/ext3/ext4文件系统参数 / 266

8.4parted:磁盘分区工具 / 268

8.5mkfs:创建Linux文件系统 / 272

8.6dumpe2fs:导出ext2/ext3/ext4文件系统信息 / 274

8.7resize2fs:调整ext2/ext3/ext4文件系统大小 / 275

8.8fsck:检查并修复Linux文件系统 / 278

8.9dd:转换或复制文件 / 281

8.10mount:挂载文件系统 / 284

8.11umount:卸载文件系统 / 288

8.12df:报告文件系统磁盘空间的使用情况 / 289

8.13mkswap:创建交换分区 / 293

8.14swapon:激活交换分区 / 294

8.15swapoff:关闭交换分区 / 295

8.16sync:刷新文件系统缓冲区 / 296

第9章 Linux进程管理命令 / 298

9.1ps:查看进程 / 298

9.2pstree:显示进程状态树 / 305

9.3pgrep:查找匹配条件的进程 / 306

9.4kill:终止进程 / 307

9.5killall:通过进程名终止进程 / 310

9.6pkill:通过进程名终止进程 / 311

9.7top:实时显示系统中各个进程的资源占用状况 / 313

9.8nice:调整程序运行时的优先级 / 320

9.9renice:调整运行中的进程的优先级 / 323

9.10nohup:用户退出系统进程继续工作 / 324

9.11strace:跟踪进程的系统调用 / 325

9.12ltrace:跟踪进程调用库函数 / 332

9.13runlevel:输出当前运行级别 / 334

9.14init:初始化Linux进程 / 335

9.15service:管理系统服务 / 335

第10章 Linux网络管理命令 / 338

10.1ifconfig:配置或显示网络接口信息 / 338

10.2ifup:激活网络接口 / 343

ifup eth0

10.3ifdown:禁用网络接口 / 343

ifdown eth0

service network restart(/etc/init.d/network restart) 激活整个网络,所有网卡。

10.4route:显示或管理路由表 / 344

10.5arp:管理系统的arp缓存 / 350

10.6ip:网络配置工具 / 351

10.7netstat:查看网络状态 / 358

10.8ss:查看网络状态 / 362

10.:测试主机之间网络的连通性 / 363

10.10traceroute:追踪数据传输路由状况 / 366

10.11arping:发送arp请求 / 367

10.12telnet:远程登录主机 / 369

10.13nc:多功能网络工具 / 370

10.14ssh:安全地远程登录主机 / 373

10.15wget:命令行下载工具 / 376

10.16mailq:显示邮件传输队列 / 379

10.17mail:发送和接收邮件 / 381

10.18nslookup:域名查询工具 / 386

10.19dig:域名查询工具 / 389

10.20host:域名查询工具 / 393

10.21nmap:网络探测工具和安全/端口扫描器 / 394

10.22tcpdump:监听网络流量 / 398

第11章 Linux系统管理命令 / 407

11.1lsof:查看进程打开的文件 / 407

11.2uptime:显示系统的运行时间及负载 / 411

11.3free:查看系统内存信息 / 411

11.4iftop:动态显示网络接口流量信息 / 413

11.5vmstat:虚拟内存统计 / 415

11.6mpstat:CPU信息统计 / 419

11.7iostat:I/O信息统计 / 420

11.8iotop:动态显示磁盘I/O统计信息 / 423

11.9sar:收集系统信息 / 425

11.10chkconfig:管理开机服务 / 430

11.11ntsysv:管理开机服务 / 433

11.12 setup:系统管理工具 / 434

11.13ethtool:查询网卡参数 / 436

11.14mii-tool:管理网络接口的状态 / 437

11.19rpm:RPM包管理器 / 443

11.20yum:自动化RPM包管理工具 / 446

top命令

第12章 Linux系统常用内置命令 / 450

12.1Linux内置命令概述 / 450

12.2Linux内置命令简介 / 450

12.3Linux常用内置命令实例 / 452

Linux的常用命令有:

  echo 命令

  举例:echo $PATH。

  功能:将命令行中的参数显示到标准输出中。

  date命令

  举例:date。

  功能:显示或设置系统时间,没参数直接显示系统当前的日期和时间。

passwd命令

  举例:passwd。

  功能:修改密码。

  file命令

  举例:file 文件名 【参数】。

  功能:确定指定文件类型。

  ls命令

  举例 ls -a 显示当前目录下的全部文件(包括隐藏文件)。

  功能:列出目录文件。

  touch命令

  举例:touch 【选项】 文件名。

  功能:修改指定文件的时间标签或者创建一个空文件。

  选项:-a 仅改变指定文件的存取时间。更多命令介绍可看下图查找

logout,shutdown,pwd,ls,cd,less,more,top,…..and so on 如图

文件管理命令

cat chattr chgrp chmod chown cksum cmp

diff diffstat file find git gitview indent

cut ln less locate isattr mattrib mc

mdel mdir mktemp more mmove mread mren

mtools mtoolstest mv od paste patch rcp

rm slocate split tee tmpwatch touch umask

which cp in mcopy mshowfat rhmask whereis

目录磁盘管理命令

cd df dirs du edquota eject

mcd mdeltree mdu mkdir mlabel mmd

mrd mzip pwd quota mount mmount

rmdir rmt stat tree umount ls

quotacheck quotaoff lndir repquota quotaon

文档编辑命令

col colrm comm csplit ed egrep ex fgrep

fmt fold grep ispell jed joe join look

mtype pico rgrep sed sort spell tr expr

uniq wc

文件传输打印命令

lprm lpr lpq lpd bye ftp

uuto uupick uucp uucico tftp ncftp

ftpshut ftpwho ftpcount

磁盘维护命令

badblocks cfdisk dd e2fsck ext2ed

fsck fsck fsconf fdformat hdparm

mformat mkbootdisk mkdosfs mke2fs mkfs.ext2

mkfs.msdos mkinitrd mkisofts mkswap mpartition

swapon symlinks sync mbadblocks mkfs

fsck.ext2 fdisk losetup mkfs sfdisk

swapoff

网络通信命令

apachectl arpwatch dip getty mingetty uux

telnet uulog uustat ppp-off netconfig nc

httpd ifconfig minicom mesg dnsconf wall

netstat ping pppstats samba setserial talk

traceroute tty newaliases uuname netconf write

statserial efax pppsetup tcpdump ytalk cu

bd testparm bd bclient shapecfg

系统管理命令

adduser chfn useradd date exit finger

fwhois sleep suspend groupdel groupmod halt

kill last lastb login logname logout

ps nice procinfo top pstree reboot

rlogin rsh sliplogin screen shutdown rwho

sudo gitps swatch tload logrotate kill

uname chsh userconf userdel usermod vlock

who whoami whois newgrp renice su

skill w id free

系统设置命令

reset clear alias dircolors aumix bind

chroot clock crontab declare depmod dmesg

enable eval export pwunconv grpconv rpm

inod kbdconfig lilo liloconfig lod minfo

set modprobe ntsysv moouseconfig passwd pwconv

rdate resize rmmod grpunconv modinfo time

setup sndconfig setenv setconsole timeconfig ulimit

unset chkconfig apmd hwclock mkkickstart fbset

unalias SVGAText Mode

备份压缩命令

ar bunzip2 bzip2 bzip2recover gunzip unarj

compress cpio dump uuencode gzexe gzip

lha restore tar uudecode unzip zip

zipinfo

设备管理命令

setleds loadkeys rdev dumpkeys MAKEDEV

关于linux strace 安装的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。


数据运维技术 » 轻松get!Linux Strace安装指南 (linux strace 安装)