linux下调试的命令 linux shell 调试

Linuxquid安装调试中几个常用命令介绍

1、初始化你在 squid.conf 里配置的 cache 目录

目前创新互联已为千余家的企业提供了网站建设、域名、虚拟空间、网站托管、服务器租用、企业网站设计、胶州网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。

#squid/sbin/squid -z //第一次启动squid服务时必须输入此命令

如果有错误提示,请检查你的 cache目录的权限。

2、对你的squid.conf 排错,即验证 squid.conf 的 语法和配置。

#squid/sbin/squid -k parse

如果squid.conf 有语法或配置错误,这里会返回提示你,如果没有返回,恭喜,可以尝试启动squid。

3、在前台启动squid,并输出启动过程。

#squid/sbin/squid -N -d1

如果有到 ready to server reques,恭喜,启动成功。

然后 ctrl + c,停止squid,并以后台运行的方式启动它。

4、启动squid在后台运行。

#squid/sbin/squid -s

这时候可以 ps -A 来查看系统进程,可以看到俩个 squid 进程。

5、停止 squid

#squid/sbin/squid -k shutdown

这个不用解释吧。

6、重引导修改过的 squid.conf

#squid/sbin/squid -k reconfigure

这个估计用的时候比较多,当你发现你的配置有不尽你意的时候,可以随时修改squid.conf,然后别忘记对你的 squid.conf排错,然后再执行此指令,即可让运行中squid重新按照你的squid.conf 来运行。

7、把squid添加到系统启动项

编辑 /etc/rc.d/rc.local

添加如下行: /usr/local/squid/sbin/squid -s

当然,并不是每个人都喜欢这种启动方式,你可以用你最习惯的方式;或者把它安装为服务。

再来点其他的。

1、修改cache 缓存目录的权限。

#chown -R squid:squid /home/cache

我的cache缓存目录是 /home/cache,squid执行用户和用户组是 squid,squid。

2、修改squid 日志目录的权限

#chown -R squid:squid /usr/local/squid/var/logs

这一步并不是适合每一个使用squid的用户.意为让squid有权限在该目录进行写操作 。

例如生成 access.log cache.log store.log

3、查看你的日志文档。

#more /usr/local/squid/var/logs/access.log | grep TCP_MEM_HIT

该指令可以看到在squid运行过程中,有那些文件被squid缓存到内存中,并返回给访问用户。

#more /usr/local/squid/var/logs/access.log | grep TCP_HIT

该指令可以看到在squid运行过程中,有那些文件被squid缓存到cache目录中,并返回给访问用户。

#more /usr/local/squid/var/logs/access.log | grep TCP_MISS

该指令可以看到在squid运行过程中,有那些文件没有被squid缓存,而是现重原始服务器获取并返回给访问用户。

关于 TCP_XXXX 等参数及代表的信息,请参看彭勇华《squid中文权威指南》13.2.1 章节。

当然,本例中的蓝色文字是可以修改为其他的参数,例如你的域名 ,同样可以看到access.log里关于该域名的行。

4、squid -k rotate 轮换squid的日志文件/var/log/squid,Squid代理服务器日志文件

的增长速度是惊人的,很容易点球满磁盘空间导致系统不能正常工作,甚至是死机.为了解决日志文件增长太快的问题,squid采用了"轮换"的方法.在squid.conf中可以通过logfile_rotate来设置文件轮换的个数,如:

logfile_rotate 10 ,轮换的工作一般用crontab定时器完在周期性的日志轮换,例如每周六凌晨2:00进行日志轮换,则执行如下命令: crontab -e

0 2 * * 6 squid -k rotate

linux运维常用命令

| 线上查询及帮助命令 |

man:全称为manual,用于查看系统中自带的各种参考手册;

help:用于显示shell内部命令的帮助信息;

| 文件和目录操作命令 |

ls:全拼list,列出目录的内容及其内容属性信息;

cd:全拼change directory,切换当前工作目录至dirName(目录参数);

cp:全称copy,复制文件或目录;

find:用于在指定目录及目录下查找文件;

mkdir:全拼make directories,创建目录;

mv:全拼move,移动或重命名文件;

pwd:全拼print working directory,显示当前工作目录的绝对路径;

rename:可用字符串替换的方式批量改变文件名;

rm:全拼remove,删除一个或多个文件或目录。必须格外小心地使用该命令;

rmdir:全拼remove empty directories,删除空目录;

touch:修改文件或者目录的时间属性,包括存取时间和更改时间。若文件不存在,系统会建立一个新的文件;

| 查看文件及内容处理命令 |

cat:全拼concatenate,用于连接多个文件并且打印到屏幕输出或重定向到指定文件中,可查看文件内容;

tac:cat的反向拼写,因此命令的功能为反向显示文件内容。文件内容的最后一行先显示,第一行最后显示;

less:可以随意浏览文件,而more仅能向前移动,却不能向后移动,而且less在查看之前不会加载整个文件;

head:显示文件的开头的内容。在默认情况下,head命令显示文件的头10行内容;

tail:查看文件尾部内容,有一个常用的参数-f常用于查阅正在改变的文件。可以看到最新的文件内容;

| 文件压缩及解压缩命令 |

tar:tar命令是用来建立,还原备份文件的工具程序,它可以加入,解开备份文件内的文件;

unzip:用于解压缩zip文件;

gzip:用于压缩文件。gzip是个使用广泛的压缩程序,文件经它压缩过后,其名称后面会多出".gz"的扩展名;

zip:用来将文件压缩成为常用的zip格式。

Linux-hexdump命令调试event驱动

hexdump: 查看文件的内容,比如二进制文件中包含的某些字符串,通常用来调试驱动用

描述

我们以event1为例,当我们insmod挂载了键盘驱动后,出现一个event1设备,

此时没有按键按下,所以event1里面的数据是没有的,那么数据又是从来哪里来?

通过键盘驱动的read函数,若有按键按下,就会上传按键数据给用户层hexdump

因为键盘驱动的input_handler 是:evdev_handler

所以键盘驱动的read函数是: evdev_handler-evdev_fops-evdev_read

进入evdev_read()函数,如下图所示:

evdev_event_to_user()这个函数从字面上来看,显然就是用来上传给用户层的函数,其中buffer是函数参数,指向用户层,所以数据就是event.

我们来看看event的结构体:input_event

把 time里的成员展开如下:

所以我们hexdump调试任何输入子系统event XX驱动时,有信息就会打印上面数据

1.调试键盘驱动

以按开发板的按键 KEY_L,为例(因为数据是从低到高打印的,所以数据是反的):

linux线上程序问题调试命令

根据这些可以查看系统调用的完整性,比如说服务器连接数一直涨,说明fd没有close,close调用在上边有缺失

strace -t -T -v -f -p 16705 -Te write 只看write系统调用

sudo gcore xxpid 生成dump文件

sudo dlv core binfile core.xxxx 调试coredump文件,查看调用栈、goroutines

查看系统级别日志 /var/log/messages

messages 日志是核心系统日志文件。它包含了系统启动时的引导消息,以及系统运行时的其他状态消息。IO 错误、网络错误和其他系统错误都会记录到这个文件中。其他信息,比如某个人的身份切换为 root,也在这里列出。如果服务正在运行,比如 DHCP 服务器,您可以在 messages 文件中观察它的活动。通常,/var/log/messages 是您在做故障诊断时首先要查看的文件。

tcpdump -i lo -nnA 'port 7076' and 'tcp[13] 4 != 0 ' 抓rst包,发送给7076端口或者是7076端口发出去的

mac osx系统:sudo tcpdump -i lo0 -nnA 'port 3000'

FFmpeg之Linux下编译与调试

下面的一切都是在 root 模式下进行的,可以不再 root 模式下进行

基础环境就是编译代码的基础库,Ubuntu联网安装软件很简单,一个语句即可搞定,这里列出语句如下:

依赖库分两方面,参考以下网站列出的依赖库信息,本文选择的版本均参考于此网页: FFmpeg依赖库信息

首先创建 FFmpeg 代码目录,所有的源代码放在这个目录下

FFmpeg 编译之后,即可使用。编译生成的可执行程序在 ~/bin 目录下

注:上面的 ./configure 配置编译后并不能进行调试,需要如下配置.

刚才的工程可以运行,但不能debug。解决此问题,首先认定一点,生成的可执行程序中,ffmpeg 不包含调试信息,调试信息在 ffmpeg_g 中,debug 要选择 ffmpeg_g。

另外,./config选项也是确定包含调试信息的核心,需要在config中添加:

采用以下命令重新config:

一些注意事项; 在使用 ffplay 播放生成 h264 格式的视频时,播放速度会加快,解决方式:不要使用 FFmpeg 转码生成纯 h264 格式的视频,要使用一种容器包含 h264 视频,即生成一种音视频流格式,也就是不要生成纯粹的 h264 码流,而是生成诸如 mkv 等格式的文件。

Linux中的set命令的详细解释

linxu下的set命令是用来设置各种shell选项或者列出shell变量。下面由我为大家整理了linux的set命令的详细解释的相关知识,希望对大家有帮助!

一、Linux中的set命令的详细解释

功能说明:设置shell。

语法:set [+-abCdefhHklmnpPtuvx]

补充说明:用set 命令可以设置各种shell选项或者列 出shell变量.单个选项设置常用的特性.在某些选项之后-o参数将特殊特性打开.在某些选项之后使用+o参数将关闭某些特性,不带任何参数的set命 令将显示shell的全部变量.除非遇到非法的选项,否则set总是返回ture.

参数:

allexport -a 从设置开始标记所有新的和修改过的用于输出的变量

braceexpand -B 允许符号扩展,默认选项

emacs 在进行命令编辑的时候,使用内建的emacs编辑器, 默认选项

errexit -e 如果一个命令返回一个非0退出状态值(失败),就退出.

histexpand -H 在做临时替换的时候允许使用!和!! 默认选项

history 允许命令行历史,默认选项

ignoreeof 禁止coontrol-D的方式退出shell,必须输入exit。

interactive-comments 在交互式模式下, #用来表示注解

keyword -k 为命令把关键字参数放在环境中

monitor -m 允许作业控制

noclobber -C 保护文件在使用重新动向的时候不被覆盖

noexec -n 在脚本状态下读取命令但是不执行,主要为了检查语法结构。

noglob -d 禁止路径名扩展,即关闭通配符

notify -b 在后台作业以后通知客户

nounset -u 在扩展一个没有的设置的变量的时候, 显示错误的信息

onecmd -t 在读取并执行一个新的命令后退出

physical -P 如果被设置,则在使用pwd和cd命令时不使用符号连接的路径 而是物理路径

posix 改变shell行为以便符合POSIX要求

privileged 一旦被设置,shell不再读取.profile文件和env文件 shell函数也不继承任何环境

verbose -v 为调试打开verbose模式

vi 在命令行编辑的时候使用内置的vi编辑器

xtrace -x 打开调试回响模式

二、Linux中的set命令详解实例

显示环境变量

# set

BASH=/bin/bash

BASH_ARGC=()

BASH_ARGV=()

BASH_LINENO=()

BASH_SOURCE=()

BASH_VERSINFO=([0]="3" [1]="00" [2]="15" [3]="1" [4]="release" [5]="i386-redhat-linux-gnu")

BASH_VERSION='3.00.15(1)-release'

COLORS=/etc/DIR_COLORS.xterm

COLUMNS=99

DIRSTACK=()

EUID=0

GROUPS=()

G_BROKEN_FILENAMES=1

HISTFILE=/root/.bash_history

HISTFILESIZE=1000

HISTSIZE=1000

HOME=/root

HOSTNAME=hnlinux

HOSTTYPE=i386

IFS=$' '

INPUTRC=/etc/inputrc

KDEDIR=/usr

LANG=zh_CN.GB2312

LESSOPEN='|/usr/bin/lesspipe.sh %s'

LINES=34

L

MAIL=/var/spool/mail/root

MAILCHECK=60

OLDPWD=/home/uptech

OPTERR=1

OPTIND=1

OSTYPE=linux-gnu

PATH=/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin:/opt/crosstools/gcc-3.4.6-glibc-2.3.6/bin

PIPESTATUS=([0]="2")

PPID=26005

PROMPT_COMMAND='echo -ne "

三、Linux的set命令的相关扩展

set、env、export——Linux中的环境变量命令

Linux是一个多用户的操作系统。每个用户登录系统后,都会有一个专用的运行环境。通常每个用户默认的环境都是相同的,这个默认环境实际上就是一组环境 变量的定义。用户可以对自己的运行环境进行定制,其方法就是修改相应的系统环境变量。

什么是环境变量

环境变量是一个具有 特定名字的对象,它包含了一个或者多个应用程序所将使用到的信息。许多用户(特别是那些刚接触Linux的新手)发现这些变量有些怪异或者难以控制。其 实,这是个误会:通过使用环境变量,你可以很容易的修改一个牵涉到一个或多个应用程序的配置信息。

常见的环境变量

对于 PATH和HOME等环境变量大家都不陌生。

PATH能够指定命令的搜索路径,那么动态链接库的路径用什么变量指定呢?或者就是在 PATH里面?

比如有一个程序需要/usr/local/lib下面的一个库文件,应该怎么指定其路径呢?

经常看到有些变量如 LD_LIBRARY_PATH,LIBPATH,CLASSPATH等,他们之间有什么不同和关系?

除此之外,还有下面一些常见环境变 量。

◆ HISTSIZE是指保存历史命令记录的条数。

◆ LOGNAME是指当前用户的登录名。

◆ HOSTNAME是指主机的名称,许多应用程序如果要用到主机名的话,通常是从这个环境变量中来取得的。

◆ SHELL是指当前用户用的是哪种Shell。

◆ LANG/LANGUGE是和语言相关的环境变量,使用多种语言的用户可以修改此环境变量。

◆ MAIL是指当前用户的邮件存放目录。

◆ PS1是基本提示符,对于root用户是#,对于普通用户是$。PS2是附属提示符,默认是“”。可以通过修改此环境变量来修改当前的命令符,比 如下列命令会将提示符修改成字符串“Hello,My NewPrompt ”。

当前标题:linux下调试的命令 linux shell 调试
分享地址:https://www.cdcxhl.com/article48/doddoep.html

成都网站建设公司_创新互联,为您提供微信小程序商城网站外贸网站建设网站策划网站制作网站排名

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

绵阳服务器托管