当前位置:文档之家› 2019年Linux下的NS229安装及错误调试

2019年Linux下的NS229安装及错误调试

2019年Linux下的NS229安装及错误调试
2019年Linux下的NS229安装及错误调试

Linux下的NS2安装+LEACH及错误修改

一、安装前的准备

说明为了方便实验和使用,采用的实在虚拟机上安装,安装和配置过程与实体无异。环境:

+准备:

在安装编译之前确保Linux中已经安装了gcc++编译工具,以及XFree86-devel and XFree86-libs两个组件。分别为:X 软件开发KDE桌面环境,可以在添加删除程序中进行安装。

二、安装过程

1. 本实验安装环境:完全安装的RedHat 操作系统,安装包。

2. 到官方下载网址下载NS2安装软件包以root登录RH9,在/home下建立ns2文件夹,将放在该文件夹下,在终端运行cd /home/ns2,使用解压命令tar xvfz ,即生成/home/ns2/ .

4. 修改/home/ns2/ 中的第73行,将NULL改为0.

5. 在/home/ns2/ 下运行。/install

6. 根据安装结束后结尾处的提示,将某些路径复制下来,或者直接按照以下修改(可以对照提示理解):

7. 修改/root/.bashrc(注意该文件为隐藏文件),在该文件末尾加上以下三句话:

export

PATH=$PATH:/home/ns2/bin:/home/ns2/ /:/home/ns2/:/home/ns2/:/home/ns2/lib export

TCL_LIBRARY=$TCL_LIBRARY:/home/ns2/在root路径下输入命令:source .bash_profile进行环境变量的更新

8.这时,如果以上设置正确,直接运行ns会出现%,或者可以运行软件自带的例子,在/home/ns2/ns-tutorial/examples下运行ns

LEACH协议的安装

准备:获取LEACH的源码文件:

1.进入到目录/home/ns2/下解压LEACH协议源文件

[root@localhost root]# cd /home/ns2/

[root@localhost ]# tar -xzcf ./

2.修改MakeFile文件

1)添加-DMIT_uAMPS到DEFINE中

DEFINE = -DTCP_DELAY_BIND_ALL.......-DMIT_uAMPS

2)添加-I./mit/rca -I./mit/uAMPS到INCLUDE中

INCLUDES = \

-I./diffusion3/filter_core -I./asim/ -I./qs \

-I./diffserv -I./satellite \

-I./wpan \

-I./mit/rca -I./mit/uAMPS \

3)添加以下代码在gaf/ \之前

mit/rca/ mit/rca/ \

mit/rca/ mit/rca/ \

mac/ mac/ mit/uAMPS/ \

注:添加过程中使用TAB键代替空格。否则编译会出错。

4)将MakeFile文件中的mit/ mit/mit注销掉(有的话)。

3.进入目录下,输入make clean

[root@localhost ]# make clean

注:若出现Makefile:1: *** missing separator. Stop.错误,查看MakeFile文件添加修改的代码是否使用空格代替了TAB,是的话改过来。

4.编译make

5.修改test文件如下:

6.修改leach_test文件,ns tcl/ex/ \ 前添加以下代码

7.修改.bashrc文件([root@localhost root]# vim .bashrc ),在文件最后添加以下环境变量。

8.mit\ MPS\sims\ 文件。

9.验证结果

10查看

错误锦集及修改

一.编译出错

的问题

在/home/ns2/common/ 文件中,

enum packet_t下添加PT_XCP,

接着在p_info()里添加name_[PT_XCP]="xcp";

/home/ns2/mac /中:

WirelessPhy *wifp = (WirelessPhy *)tifp;之后加入:

mac下面的文件中

WirelessPhy()下添加

然后在的最后添加

:DROP_MAC_COLLISION

在文件中#define DROP_MAC_COLLISION "COL"之后加入端小端的问题

注释掉#ifndef和#endif。

: In member function `void MobileNode::update_position()':

common/:477: warning: unused variable `double oldY'

注释掉:

: In member function `virtual void

WirelessPhy::sendDown(Packet*)':

mac/:320: `min' undeclared (first use this function)

把min改成MIN

说明:具体的错误修改可以参考其他版本(如:的对应文件进行修改。二.测试出错

解决方法:

\\tcl\lib\文件第692行加入7个初始值如下:

具体的初始值应该对照

\\mac\输入(第95行,第97-99行,第104-105行,第107行)

注意:提示code omitted because of length 错误, 错误在set Efriss_amp_ 100*1e-12;

原因是:不能设置表达式,要改成set Efriss_amp_ *1e-10, 同理改_amp_ *1e-12; set EXcvr_ 50*1e-9 )。修改之后,要重新编译。即先执行make clean,再执行make。成功后,再次运行./test,得到第一次的结果。

解决:

出现这个问题的原因可以在两个文件当中找到。

第一个文件mit/uAMPS/当中

Application/LEACH instproc send_now {mac_dst link_dst type msg \

data_size dist code} {

[$self agent] set packetMsg_ $type

[$self agent] set dst_ $mac_dst ;#正是这句产生了大量的警告信息

[$self agent] sendmsg $data_size $msg $mac_dst $link_dst $dist $code

}

解决办法:

将上面一句改成如下两句就OK了。

[$self agent] set dst_addr_ $mac_dst

[$self agent] set dst_port_ 0

虽然这样能够减少警告信息,但本人不知道dst_port_设为0是否正确了,也许当是0xffff的吧,正在分析原代码ing...

第二个文件mit/uAMPS/ 当中

Application/BSApp instproc send {mac_dst link_dst type msg

data_size dist code} {

[$self agent] set packetMsg_ $type

[$self agent] set dst_ $mac_dst ;#产生了大量的警告信息的语句

[$self agent] sendmsg $data_size $msg $mac_dst $link_dst $dist $code

}

同样将上面语句改为下面两句

[$self agent] set dst_addr_ $mac_dst

[$self agent] set dst_port_ 0

DataStageV8.5配置连接oracle操作手册

DataStageV8.5配置连接oracle 操作手册 编制:长安铃木信息系统课 王川 2012-5-7

目录 1概述 (4) 1.1编写目的 (4) 1.2系统配置 (4) 1.3事前准备 (4) 2开始安装客户端 (4) 3配置DATASTAGE 环境 (6) 4配置测试 (7)

文档版本记录 版本编号变更内容变更人日期

DataStageV8.5配置连接oracle 操作手册 1概述 1.1 编写目的 DataStage V8.5 在安装后默认支持DB2 数据库,为了实现抽取ORACLE 数据库,需要配置服务器端。 1.2 系统配置 DataStage V8.5 Suse linux server sp1 1.3 事前准备 1、安装XFTP:传递文件。 2、开启SSH服务:终端控制。 3、Oracle官网下载11g client。 https://www.doczj.com/doc/f815421668.html,/technetwork/database/enterprise-edition/downloads/112010-linuxsoft- 085393.html 2开始安装客户端 1、FTP上传linux_11gR2_client.zip ,并解压至TMP目录。 2、创建组和权限。 groupadd oinstall groupadd dba useradd –g oinstall –G dba –m oracle passwd oracle mkdir –p /home/oracle/ chown -R oracle:oinstall /home/oracle/ 3、修改环境配置文件。 /etc/sysctl.conf 加上如下内容 fs.aio-max-nr = 1048576 fs.file-max = 6815744 kernel.shmall = 2097152 kernel.shmmax = 536870912 kernel.shmmni = 4096 kernel.sem = 250 32000 100 128 net.ipv4.ip_local_port_range = 9000 65500 net.core.rmem_default = 262144 net.core.rmem_max = 4194304 net.core.wmem_default = 262144 net.core.wmem_max = 1048586 net.ipv4.tcp_wmem = 262144 262144 262144 net.ipv4.tcp_rmem = 4194304 4194304 4194304

linux C用户态调试追踪函数调用堆栈以及定位段错误

linux C用户态调试追踪函数调用堆栈以及定位段错误 一般察看函数运行时堆栈的方法是使用GDB(bt命令)之类的外部调试器,但是,有些时候为了分析程序的BUG,(主要针对长时间运行程序的分析),在程序出错时打印出函数的调用堆栈是非常有用的。 在glibc头文件"execinfo.h"中声明了三个函数用于获取当前线程的函数调用堆栈。 int backtrace(void **buffer,int size) 该函数用于获取当前线程的调用堆栈,获取的信息将会被存放在buffer中,它是一个指针列表。参数size 用来指定buffer中可以保存多少个void* 元素。函数返回值是实际获取的指针个数,最大不超过size大小 在buffer中的指针实际是从堆栈中获取的返回地址,每一个堆栈框架有一个返回地址 注意:某些编译器的优化选项对获取正确的调用堆栈有干扰,另外内联函数没有堆栈框架;删除框架指针也会导致无法正确解析堆栈内容 char ** backtrace_symbols (void *const *buffer, int size) backtrace_symbols将从backtrace函数获取的信息转化为一个字符串数组. 参数buffer应该是从backtrace函数获取的指针数组,size是该数组中的元素个数(backtrace的返回值) 函数返回值是一个指向字符串数组的指针,它的大小同buffer相同.每个字符串包含了一个相对于buffer中对应元素的可打印信息.它包括函数名,函数的偏移地址,和实际的返回地址 现在,只有使用ELF二进制格式的程序才能获取函数名称和偏移地址.在其他系统,只有16进制的返回地址能被获取.另外,你可能需要传递相应的符号给链接器,以能支持函数名功能(比如,在使用GNU ld链接器的系统中,你需要传递(-rdynamic),-rdynamic可用来通知链接器将所有符号添加到动态符号表中,如果你的链接器支持-rdynamic的话,建议将其加上!) 该函数的返回值是通过malloc函数申请的空间,因此调用者必须使用free函数来释放指针. 注意:如果不能为字符串获取足够的空间函数的返回值将会为NULL void backtrace_symbols_fd (void *const *buffer, int size, int fd)

DataStage-V11.3部署手册

DataStageV11.3 安装手册 修订记录

一、基础安装环境检查 1.操作系统Redhat Linux6需要的安装补丁包 glibc-2.12-1.107.el6.x86_64 libXp-1.0.0-15.1.el6.x86_64 libXau-1.0.5-1.el6.x86_64 libXext-1.1-3.el6.x86_64 libX11-1.3-2.el6.x86_64 libxcb-1.5-1.el6.x86_64 libXmu-1.0.5-1.el6.x86_64 nss-softokn-freebl-3.14.3-9.el6.x86_64 pam-1.1.1-4.el6_0.1.x86_64 libaio-0.3.107-10.el6.x86_64 libstdc++-4.4.7-3.el6.x86_64 compat-libstdc++-33-3.2.3-69.el6.x86_64 libgcc-4.4.7-3.el6.x86_64 2.检查操作方法 rpm –qa | grep glibc 3.授权文件配置 将授权文件解压至安装文件is-suite文件夹下

二、创建oracle数据库 1.将DataStage初始化Oracle数据库脚本上传至数据库 服务器 2.依次执行数据库初始化脚本 ./create_xmeta_db.sh sys Oracle123 orcldb dsadmin dsadmin'!'123 DATASTAGE /oracle/app/oracle/oradata/orcldb ./create_xmeta_db.sh sys Oracle123 orcldb wsadmin wsadmin'!'123 DATASTAGE1 /oracle/app/oracle/oradata/orcldb

linux错误码大全

linux错误码大全 查看错误代码errno是调试程序的一个重要方法。当linuc C api函数发生异常时,一般会将errno变量(需include errno.h)赋一个整数值,不同的值表示不同的含义,可以通过查看该值推测出错的原因。在实际编程中用这一招解决了不少原本看来莫名其妙的问题。比较麻烦的是每次都要去linux源代码里面查找错误代码的含义,现在把它贴出来,以后需要查时就来这里看了。 1-34号错误号是在内核源码的include/asm-generic/errno-base.h定义 35-132则是在include/asm-generic/errno.h中定义 剩下还有一些更大的错误号是留给内核级别的,如系统调用等,用户程序一般是看不见的这些号的,Ubuntu9.10中 /usr/src/linux-headers-2.6.31-21-generic/include/linux/errno.h #ifndef _ASM_GENERIC_ERRNO_BASE_H #define _ASM_GENERIC_ERRNO_BASE_H #define EPERM 1 /* Operation not permitted */ #define ENOENT 2 /* No such file or directory */ #define ESRCH 3 /* No such process */ #define EINTR 4 /* Interrupted system call */ #define EIO 5 /* I/O error */ #define ENXIO 6 /* No such device or address */ #define E2BIG 7 /* Argument list too long */ #define ENOEXEC 8 /* Exec format error */ #define EBADF 9 /* Bad file number */ #define ECHILD 10 /* No child processes */ #define EAGAIN 11 /* Try again */ #define ENOMEM 12 /* Out of memory */ #define EACCES 13 /* Permission denied */ #define EFAULT 14 /* Bad address */ #define ENOTBLK 15 /* Block device required */ #define EBUSY 16 /* Device or resource busy */ #define EEXIST 17 /* File exists */ #define EXDEV 18 /* Cross-device link */ #define ENODEV 19 /* No such device */

实例—使用gdb调试器

2.4 实例—使用gdb调试器 1.编写实例程序gcctest.c,见2.2小节的开头部分 2.编译 3.启动GDB,执行程序 启动gdb,进入gdb调试环境,可以使用gdb的命令对程序进行调试。 [root@localhost gdbtest txt]# gdb //启动gdb GNU gdb Fedora (6.8-27.el5) Copyright (C) 2008 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "i386-redhat-linux-gnu". (gdb) run gcctest //在gdb中,运行程序使用r或是run命令,注意,gcctest没有调试信息Starting program: gcctest No executable file specified. Use the "file" or "exec-file" command. //要使用file或exec-file命令指出要运行的程序 (gdb) file gcctest //使用file命令指出要运行的程序gcctest,注意,对gdb命令也可以使用Tab gcctest gcctest.c gcctestg (gdb) file gcctest //使用file命令指出要运行的程序gcctest Reading symbols from /root/Desktop/gdbtest txt/gcctest...(no debugging symbols found)...done. (gdb) r //在gdb中,运行程序使用r或是run命令 Starting program: /root/Desktop/gdbtest txt/gcctest gcctest (no debugging symbols found) (no debugging symbols found) (no debugging symbols found) hello in main hello 1 hello 2 sum=54125560035401396161080590579269632.000000 Program exited with code 057. (gdb) file gcctestg //使用file命令指出要运行的程序gcctestg Reading symbols from /root/Desktop/gdbtest txt/gcctestg...done. (gdb) r //在gdb中,运行程序使用r或是run命令 Starting program: /root/Desktop/gdbtest txt/gcctestg gcctest hello in main hello 1 hello 2 sum=54125560035401396161080590579269632.000000 Program exited with code 057. (gdb) q //使用q或是quit命令退出gdb [root@localhost gdbtest txt]# 4.GDB命令简介

c语言段错误小结

C段错误总结 C语言2009-02-17 11:49:51 阅读21 评论0 字号:大中小订阅 最近一段时间在linux下用C做一些学习和开发,但是由于经验不足,问题多多。而段错误就是让我非常头痛的一个问题。不过,目前写几百行的代码,也很少出现段错误,或者是即使出现了,也很容易找出来,并且处理掉。 那什么是段错误?段错误为什么是个麻烦事?以及怎么发现程序中的段错误以及如何避免发生段错误呢? 一方面为了给自己的学习做个总结,另一方面由于至今没有找到一个比较全面介绍这个虽然是“FREQUENTLY ASKED QUESTIONS”的问题,所以我来做个抛砖引玉吧。下面就从上面的几个问题出发来探讨一下“Segmentation faults"吧。 目录 1。什么是段错误? 2。为什么段错误这么“麻烦”? 3。编程中通常碰到段错误的地方有哪些? 4。如何发现程序中的段错误并处理掉? 正文 1。什么是段错误? 下面是来自https://www.doczj.com/doc/f815421668.html,的定义: A segmentation fault(often shortened to segfault) is a particular error condition that can occur during the operation of computer software. In short, a segmentation fault occurs when a program attempts to access a memory location that it is not allowed to access, or attempts to access a memory location in a way that is not allowed (e.g., attempts to write to a read-only location, or to overwrite part of the operating system). Systems based on processors like the Motorola 68000 tend to refer to these events as Address or Bus errors. Segmentation is one approach to memory management and protection in the operating system. It has been superseded by paging for most purposes, but much of the terminology of segmentation is still used, "segmentation fault" being an example. Some operating systems still have segmentation at some logical level although paging is used as the main memory management policy.

国嵌视频教程下载

嵌入式Linux视频教程 相关搜索:简体中文, 学习方法, 视频教程, 普通话, 嵌入式 中文名: 嵌入式Linux视频教程 资源格式: 光盘镜像 学校: 成都国嵌嵌入式培训中心版本: 成都国嵌嵌入式培训中心的基于广州友善之发行日期: 2010年 地区: 大陆 对白语言: 普通话 文字语言: 简体中文 视频光盘目录结构 国嵌视频1.iso -学习方法与课程体系介绍(学前必看) -学习方法介绍.avi -国嵌嵌入式课程体系.pdf -嵌入式Linux学习方法.pdf -国嵌课程1-嵌入式入门体验班(上) -第1天(嵌入式系统概述) -国嵌体验入门班-1-1(嵌入式系统概述).avi -国嵌体验入门班-1-2(ARM概述).avi -国嵌体验入门班-1-3(嵌入式Linux概述).avi -国嵌体验入门班-1-4(2440开发板介绍).avi -国嵌体验入门班-1-5(软硬件环境搭建).avi -第2天(开发板快乐体验) -国嵌体验入门班-2-1(开发板系统安装).avi -国嵌体验入门班-2-1(开发板系统安装-Jlink方式).avi -国嵌体验入门班-2-1(开发板系统安装-并口方式).avi -国嵌体验入门班-2-2(裸机程序体验).avi -国嵌体验入门班-2-3(QT系统体验).avi -国嵌体验入门班-2-4(Android系统体验).avi 国嵌视频2.iso

-国嵌课程1-嵌入式入门体验班(下) -第3天(Linux系统体验) -国嵌体验入门班-3-1(Linux定制安装).avi -国嵌体验入门班-3-2(Linux命令).avi -国嵌体验入门班-3-3(VI使用).avi -国嵌体验入门班-3-4(Linux系统管理).avi -国嵌体验入门班-3-5(Shell编程).avi -国嵌体验入门班-3-6(Qcd功能演示).avi -国嵌体验入门班-3-7(必修实验).avi -国嵌课程2-嵌入式Linux应用开发班 -第1天(编程基础) -国嵌应用班-1-1(GCC程序编译).avi -国嵌应用班-1-2(GDB程序调试).avi -国嵌应用班-1-3(makefile工程管理).avi -国嵌应用班-1-4(必修实验).avi -第2天(文件时间编程) -国嵌应用班-2-1(系统调用方式访问文件).avi -国嵌应用班-2-2(库函数访问文件).avi -国嵌应用班-2-3(时间编程).avi -国嵌应用班-2-4(必修实验).avi -第3天(多进程程序设计) -国嵌应用班-3-1(进程控制原理).avi -国嵌应用班-3-2(进程控制程序设计).avi -国嵌应用班-3-3(必修实验).avi -第4天(进程间通讯) -国嵌应用班-4-1(进程间通讯概述).avi -国嵌应用班-4-2(管道通讯).avi -国嵌应用班-4-3(信号通讯).avi -国嵌应用班-4-4(共享内存通讯).avi -国嵌应用班-4-5(必修实验).avi -第5天(进程间通讯) -国嵌应用班-5-1(消息队列).avi

GDB调试精粹及使用实例

GDB调试精粹及使用实例 一:列文件清单 1. List (gdb) list line1,line2 二:执行程序 要想运行准备调试的程序,可使用run命令,在它后面可以跟随发给该程序的任何参数,包括标准输入和标准输出说明符(<和>)和外壳通配符(*、?、[、])在内。 如果你使用不带参数的run命令,gdb就再次使用你给予前一条run命令的参数,这是很有用的。 利用set args 命令就可以修改发送给程序的参数,而使用show args 命令就可以查看其缺省参数的列表。 (gdb)set args –b –x (gdb) show args backtrace命令为堆栈提供向后跟踪功能。 Backtrace 命令产生一张列表,包含着从最近的过程开始的所以有效过程和调用这些过程的参数。 三:显示数据 利用print 命令可以检查各个变量的值。 (gdb) print p (p为变量名) whatis 命令可以显示某个变量的类型 (gdb) whatis p type = int * print 是gdb的一个功能很强的命令,利用它可以显示被调试的语言中任何有效的表达式。表达式除了包含你程序中的变量外,还可以包含以下内容: l 对程序中函数的调用 (gdb) print find_entry(1,0) l 数据结构和其他复杂对象 (gdb) print *table_start $8={e=reference=’\000’,location=0x0,next=0x0} l 值的历史成分 (gdb)print $1 ($1为历史记录变量,在以后可以直接引用 $1 的值) l 人为数组 人为数组提供了一种去显示存储器块(数组节或动态分配的存储区)内容的方法。早期的调试程序没有很好的方法将任意的指针换成一个数组。就像对待参数一样,让我们查看内存中在变量h后面的10个整数,一个动态数组的语法如下所示: base@length 因此,要想显示在h后面的10个元素,可以使用h@10: (gdb)print h@10 $13=(-1,345,23,-234,0,0,0,98,345,10)

DataStage8.7安装文档

DataStage 8.7安装文档 官方参考: https://www.doczj.com/doc/f815421668.html,/infocenter/iisinfsv/v8r7/index.jsp?topic=%2Fcom.ibm.swg.im.iis.producti zation.iisinfsv.install.doc%2Ftopics%2Fwsisinst_topinstall.html 1.安装前配置 操作系统:Redhat Enterprise Linux 6.2 64位 注:由于是在Linux下安装DataStage,最好熟悉基本的linux命令的使用。 1、需要安装以下rpm包,32位和64位都需要。 glibc-2.12-1.47 libXp-1.0.0-15.1 libXau-1.0.5-1 libXext-1.1-3 libX11-1.3-2 libxcb-1.5-1 nss-softokn-freebl-3.12.9-11 libXmu-1.0.5-1 libXtst-1.0.99.2-3 libXft-2.1.13-4.1 freetype-2.3.11-6 fontconfig-2.8.0-3 libgcc-4.4.6-3 libstdc++-4.4.6-3. compat-libstdc++-33-3.2.3-69 2、关闭防火墙 关闭:service iptables stop 查看状态:service iptables status 3、禁用selinux 编辑/etc/selinux/config文件,修改SELINUX=disabled,修改后需要重启操作系统。 查看状态:sestatus 4、创建用户 groupadd -g 502 daspgrp groupadd -g 503 db2fgrp groupadd -g 504 db2igrp groupadd -g 505 dstgrp useradd -d /home/dasusr1 -m -g 502 -u 701 dasusr1 useradd -d /home/db2fenc1 -m -g 503 -u 702 db2fenc1 useradd -d /home/db2inst1 -m -g 504 -u 703 db2inst1 useradd -d /home/dsadm -m -g 505 -u 704 dsadm

Linux服务器常用命令(简化版)

Linux服务器常用命令(简化版) 信息来源:网络整理:HY 日期:2011-5-27 Intel Fortran编译 Linux shell管道命令(pipe)使用及与shell重定向 Linux命令替换 Linux 任务控制(bg jobs fg nohup &) Linux进程查看 Linux账户管理 Linux系统与硬盘信息查询 Linux VIM语法高亮与程序段错误 Linux十大常用命令

Intel Fortran编译 完整编译顺序 $ ifort -c Hello.f90 -o Hello.o编译源文件(.f90)生成目标文件(.o) $ ifort Hello.o -o Hello链接目标文件生成可执行程序Hello $./Hello 执行可执行程序 默认(常用编译方法) $ ifort Hello.f90编译&链接 $./a.out 执行a.out(默认可执行程序名) 后台运行 $ ./a.out & 后台运行,退出shell会使程序停止,输出信息会显示在屏幕,不建议这样使用$nohup ./a.out & 输出到屏幕的信息输出到nohup.out文件 $nohup ./a.out > screen.txt & 输出到屏幕的信息输出到screen.txt文件(推荐) Linux shell管道命令(pipe)使用及与shell重定向 Ref:https://www.doczj.com/doc/f815421668.html,/chengmo/archive/2010/10/21/1856577.html 重定向 详细解释参考:https://www.doczj.com/doc/f815421668.html,/view/2173319.htm 在Linux命令行模式中,如果命令所需的输入不是来自键盘,而是来自指定的文件,这就是输入重定向。同理,命令的输出也可以不显示在屏幕上,而是写入到指定文件中,这就是输出重定向。 重定向分为: 重定向分为 输出重定向、输入重定向和错误重定向。 < 实现输入重定向。 >或>> 实现输出重定向,用户可以使用输出重定向把一个命令的输出重定向到一个文件 1)ls –l /etc>dir 将ls命令生成的/etc目录下的一个清单存到当前目录 中的dir文件,而不在屏幕输出。 2)ls –l /usr>>dir 将ls命令生成的/usr目录的一个清单以追加的方式存 到当前目录中的dir文件中。 重定向连接两个或多个文件? 使用cat命令并重定向输出到一个文件可以连接两个或多个文件。 重定向追加到一个文件:可以使用双重定向输出符号“>>”,保留文件以前的内容。 这种情况下,命令输出追加到另一个文件中。 重定向重定向标准输出到一个设备? 除了重定向一个命令的输出到一个文件,也可以把它重定向到一个设备,因为UNIX系统将设备当做文件。 $echo “Hello! I am petter!” > /dev/tty01 重定向标准输入? 使用“<”重定向输入。例如:用户已经创建好了一个文件letter。如果希望通过电子邮件发送给用户petter。可以使用下面方式:$mail petter < letter 重定向标准错误重定向? 没有专门的符号用于重定向stderr。我们可以同样使用“< ”或“>”符号,但需在它前面补一个数字2。 PS:重定向的优先级大于管道的优先级!^_^ 管道右边的命令只能对管道左边的命令的标准输出(输出到屏幕)起作用,不对错误输出(也输出到屏幕)起作用。 一个命令的执行首先决定0,1,2设备的定向,然后才执行命令,可以将定向理解为命令执行

Linux段错误(精)

1 执行socket文件时,出现段错误 (core dumped 产生段错误就是访问了错误的内存段,一般是你没有权限,或者根本就不存在对应的物理内存,尤其常见的是访问0地址. 解决方法: 利用gdb逐步查找段错误: 首先我们需要一个带有调试信息的可执行程序,所以我们加上“-g -rdynamic"的参数进行编译,然后用gdb调试运行这个新编译的程序,具体步骤如下: 1、 gcc -g -rdynamic d.c 2、 gdb ./a.out 3、 r 这样就找到了出错位置。然后在相应位置修改。 2 linux 段错误如何调试 linux下的c程序常常会因为内存访问错误等原因造成segment fault(段错误)此时如果系统core dump功能是打开的,那么将会有内存映像转储到硬盘上来,之后可以用gdb对core文件进行分析,还原系统发生段错误时刻的堆栈情况。这对于我们发现程序bug很有帮助。

使用ulimit -a可以查看系统core文件的大小限制;使用ulimit -c [kbytes]可以设置系统允许生成的core文件大小。 ulimit -c 0 不产生core文件 ulimit -c 100 设置core文件最大为100k ulimit -c unlimited 不限制core文件大小 步骤: 1、当发生段错误时,我们查看ulimit -a (core file size (blocks, -c 0)并没有文件, 2、设置:ulimit -c unlimited 不限制core文件大小 3.、运行程序,发生段错误时会自动记录在core中 4、test]$ ls -al core.* 在那个文件下(-rw------- 1 leconte leconte 139264 01-06 22:3 1 core.2065) 5、使用gdb 运行程序和段错误记录的文件。(est]$ gdb ./test core.2065) 6、会提哪行有错。 很多系统默认的core文件大小都是0,我们可以通过在Shell的启动脚本/etc/bashrc或者~/.bashrc等地方来加入ulimit -c 命令来指定core文件大小,从而确保core文件能够生成。 除此之外,还可以在/proc/sys/kernel/core_pattern里设置core文件的文件名模板,详情请看core的官方man手册。

浅析Linux下core文件

浅析Linux下core文件 当我们的程序崩溃时,内核有可能把该程序当前内存映射到core文件里,方便程序员找到程序出现问题的地方。最常出现的,几乎所有C程序员都出现过的错误就是“段错误”了。也是最难查出问题原因的一个错误。下面我们就针对“段错误”来分析core文件的产生、以及我们如何利用core文件找到出现崩溃的地方。 何谓core文件 当一个程序崩溃时,在进程当前工作目录的core文件中复制了该进程的存储图像。core文件仅仅是一个内存映象(同时加上调试信息),主要是用来调试的。 当程序接收到以下UNIX信号会产生core文件: 名字说明ANSI C POSIX.1SVR4 4.3+BSD 缺省动作 SIGABRT异常终止(abort) . . . .终止w/core SIGBUS硬件故障 . . .终止w/core SIGEMT硬件故障 . .终止w/core SIGFPE算术异常 . . . .终止w/core SIGILL非法硬件指令 . . . .终止w/core SIGIOT硬件故障 . .终止w/core SIGQUIT终端退出符 . . .终止w/core SIGSEGV无效存储访问 . . . .终止w/core SIGSYS无效系统调用 . .终止w/core SIGTRAP硬件故障 . .终止w/core SIGXCPU超过CPU限制 (setrlimit) . .终止w/core

SIGXFSZ超过文件长度限 . .终止w/core 制(setrlimit) 在系统默认动作列,“终止w/core”表示在进程当前工作目录的core文件中复制了该进程的存储图像(该文件名为core,由此可以看出这种功能很久之前就是UNIX功能的一部分)。大多数UNIX调试程序都使用core 文件以检查进程在终止时的状态。 core文件的产生不是POSIX.1所属部分,而是很多UNIX版本的实现特征。UNIX第6版没有检查条件(a)和(b),并且其源代码中包含如下说明:“如果你正在找寻保护信号,那么当设置-用户-ID命令执行时,将可能产生大量的这种信号”。4.3 + BSD产生名为core.prog的文件,其中prog是被执行的程序名的前1 6个字符。它对core文件给予了某种标识,所以是一种改进特征。 表中“硬件故障”对应于实现定义的硬件故障。这些名字中有很多取自UNIX早先在DP-11上的实现。请查看你所使用的系统的手册,以确切地确定这些信号对应于哪些错误类型。 下面比较详细地说明这些信号。 ? SIGABRT 调用abort函数时产生此信号。进程异常终止。 ? SIGBUS 指示一个实现定义的硬件故障。 ? SIGEMT 指示一个实现定义的硬件故障。 EMT这一名字来自PDP-11的emulator trap 指令。 ? SIGFPE 此信号表示一个算术运算异常,例如除以0,浮点溢出等。 ? SIGILL 此信号指示进程已执行一条非法硬件指令。 4.3BSD由abort函数产生此信号。SIGABRT现在被用于此。

GDB调试及实例

GDB调试及实例 一:列文件清单 1.List (gdb) list line1,line2 二:执行程序 要想运行准备调试的程序,可使用run命令,在它后面可以跟随发给该程序的任何参数,包括标准输入和标准输出说明符(<和>)和外壳通配符(*、?、[、])在内。 如果你使用不带参数的run命令,gdb就再次使用你给予前一条run命令的参数,这是很有用的。 利用set args 命令就可以修改发送给程序的参数,而使用show args 命令就可以查看其缺省参数的列表。 (gdb)set args –b –x (gdb) show args backtrace命令为堆栈提供向后跟踪功能。 Backtrace 命令产生一张列表,包含着从最近的过程开始的所以有效过程和调用这些过程的参数。 三:显示数据 利用print 命令可以检查各个变量的值。 (gdb) print p (p为变量名) whatis 命令可以显示某个变量的类型 (gdb) whatis p type = int * print 是gdb的一个功能很强的命令,利用它可以显示被调试的语言中任何有效的表达式。表达式除了包含你程序中的变量外,还可以包含以下内容: l 对程序中函数的调用 (gdb) print find_entry(1,0) l 数据结构和其他复杂对象 (gdb) print *table_start $8={e=reference=’\000’,location=0x0,next=0x0} l 值的历史成分 (gdb)print $1 ($1为历史记录变量,在以后可以直接引用$1 的值) l 人为数组 人为数组提供了一种去显示存储器块(数组节或动态分配的存储区)内容的方法。早期的调试程序没有很好的方法将任意的指针换成一个数组。就像对待参数一样,让我们查看内存中在变量h后面的10个整数,一个动态数组的语法如下所示: base@length 因此,要想显示在h后面的10个元素,可以使用h@10: (gdb)print h@10 $13=(-1,345,23,-234,0,0,0,98,345,10)

Datastage8.5的配置(通信等问题)

Datastage8.5的配置(通信等问题) Datastagelinux版本的服务端、客户端安装完成后需要进行一些配置。 这是以我自己的使用过程遇到的错误进行了一次配置的总结。有不对的地方请大家指正。 DS版本:8.5x 服务端操作系统:linux redhat 5.7 客户端操作系统:win7 源数据和目标数据库为:oracle 下列配置,是在服务端和客户端已经安装成功的情况下。 客户端和服务端的通信。 可能遇到问题: 1. Failed to authenticate the current user against the selected service tier: Server [servername] not found. 2. Failed to authenticate the current user against the selected service tier: Could not connect to server [servername] on port [portnumber]. 3. Failed to authenticate the current user against the selected Domain: Invalid user name (username) or password. 解决思路,大概如下: 一,确保所有的datastage 服务已经开启。在linux 可使用ps -ef |grep db2 ,ps -ef|grep websphere,ps -ef|grep agent等命令来查看 相关服务是否已经启动。 二,客户端配置 在windows:C:\WINDOWS\system32\drivers\etc\hosts file 添加(服务器的IP地址,以及计算机名) 比如:192.168.26.10 https://www.doczj.com/doc/f815421668.html, dahost 三,如果遇到用户名和密码的问题那么使用dsadmin 或者dsadm用户登陆客户端试试,密码是安装时自己设置的,切记。 如果使用的是其他用户,那么登陆web console ,确保已经做好了Credential mapping 。 四,确保使用的是正确的port ,端口一般是9080。控制台是9060 可以通过netstat -a 来查看当前监听的是哪一个端口。

去年Linux复习题(全)

1. Linux文件权限一共10位长度,分成四段,第三段表示的内容是( )。 A 文件类型 B 文件所有者的权限 C 文件所有者所在组的权限 D 其他用户的权限 2. 终止一个前台进程可能用到的命令和操作( )。 A kill B ctrl + C C shut down D halt 3.在使用mkdir命令创建新的目录时,在其父目录不存在时先创建父目录的选项是( )。 A –m B -d C -f D –p 4. 一个文件名字为rr.Z,可以用来解压缩的命令是( )。 A tar B gzip C compress D uncompress 5. 下列提法中,不属于ifconfig命令作用范围的是( )。 A 配置本地回环地址 B 配置网卡的IP地址 C 激活网络适配器 D 加载网卡到内核中 6. 下列不是Linux系统进程类型的是( )。 A 交互进程 B 批处理进程 C 守护进程 D 就绪进程 7. 内核不包括的子系统是 ( )。 A 进程管理系统 B 内存管理系统 C I/O管理系统D硬件管理系统 8.若一台计算机的内存为128MB,则交换分区的大小通常是( )。 A 64M B B 128MB C 256MB D 512MB 10.在TCP/IP模型中,应用层包含了所有的高层协议,在下列的一些应用协议中,是能够实现本地与远程主机之间的文件传输工作( )。 A telnet B FTP C SNMP D NFS 11.对名为fido的文件用chmod 551 fido 进行了修改,则它的许可权是 ( )。 A -rwxr-xr-x B -rwxr--r— C -r--r--r— D -r-xr-x—x 12.用ls –al 命令列出下面的文件列表, ( )文件是符号连接文件。 A -rw-rw-rw- 2 hel-s users 56 Sep 09 11:05 hello B -rwxrwxrwx 2 hel-s users 56 Sep 09 11:05 goodbey C drwxr--r-- 1 hel users 1024 Sep 10 08:10 zhang D lrwxr--r-- 1 hel users 2024 Sep 12 08:12 cheng 13.NFS是系统( )。 A 文件 B 磁盘 C 网络文件 D 操作 14.Linux文件系统的文件都按其作用分门别类地放在相关的目录中,对于外部设备文件,一般应将其放在( ) 目录中。 A /bin B /etc C /dev D /lib 15.关闭linux系统(不重新启动)可使用命令( )。 A Ctrl+Alt+Del B halt C shutdown -r now D reboot 16.用命令ls -al显示出文件ff的描述如下所示,由此可知文件ff的类型为( ) 。 -rwxr-xr-- 1 root root 599 Cec 10 17:12 ff A 普通文件 B 硬链接 C 目录 D 符号链接 17.删除文件命令为:( ) 。 A mkdir B rmdir C mv D rm 18.对文件进行归档的命令为( ) 。 A dd B cpio C gzip D tar

datastage教程

1、【第一章】datastage简介与工作原理 1、简介 数据中心(数据仓库)中的数据来自于多种业务数据源,这些数据源可能是不同硬件平台上,使用不同的操作系统,数据模型也相差很远,因而数据以不同的方式存在不同的数据库中。如何获取并向数据中心(数据仓库)加载这些数据量大、种类多的数据,已成为建立数据中心(数据仓库)所面临的一个关键问题。针对目前系统的数据来源复杂,而且分析应用尚未成型的现状,专业的数据抽取、转换和装载工具DataStage是最好的选择。 Websphere DataStage 是一套专门对多种操作数据源的数据抽取、转换和维护过程进行简化和自动化,并将其输入数据集市或数据中心(数据仓库)目标数据库的集成工具。 DataStage 能够处理多种数据源的数据,包括主机系统的大型数据库、开放系统上的关系数据库和普通的文件系统等,以下列出它所能处理的主要 数据源: 大型主机系统数据库:IMS,DB2,ADABAS,VSAM 等 开放系统的关系数据库:Informix,Oracle,Sybase,DB2,Microsoft SQL Server等ERP 系统:SAP/R3,PeopleSoft系统等,普通文件和复杂文件系统,FTP 文件系统,XML等IIS,Netscape,Apache等Web服务器系统Outlook等Email系统。 DataStage 可以从多个不同的业务系统中,从多个平台的数据源中抽取数据,完成转换和清洗,装载到各种系统里面。其中每步都可以在图形化工具里完成,同样可以灵活的被外部系统调度,提供专门的设计工具来设计转换规则和清洗规则等,实现了增量抽取、任务调度等多种复杂而实用的功能。其中简单的数据转换可以通过在界面上拖拉操作和调用一些DataStage 预定义转换函数来实现,复杂转换可以通过编写脚本或结合其他语言的扩展来实现,并且DataStage 提供调试环境,可以极大提高开发和调试抽取、转换程序的效率。

相关主题
文本预览
相关文档 最新文档