• ArchLinux安装教程linuxarch

    一 准备工作 1  文件下载及启动盘制作文件可以在https://mirrors.ustc.edu.cn/,这是个中科大的镜像网,选择如下:下载完成后,就是制作一个启动盘,我使用的是Linux下强大的dd的命令,即: #dd if=xxx.iso of=/dev/sdb其中if表示输入文件,of表示输出文件,/dev/sdb表示的是你的u盘,具体要根据个人系统挂载情况。准备的u盘不需要太好,因为这种方式会使得u盘的容量隐藏起来而无法使用,所以最好用一个次一点的u盘。当然了,制作启动盘有很多种方法,使用ultraiso这个软件也是比较方便的,具体的用法百度就有,这里不再赘述。 注:现在这个网站貌似崩了,那就去archwiki下载:https://www.archlinux.org/download/2  开始安装及分区操作现在就可以开始安装系...

    伏草惟存 发布于:2017年07月27 16:03:56
  • Centos使用yum出现/usr/local/lib/liblzma.so.5: version `XZ_5.1.2alpha' not found (required by /lib64/librpmio.so.3)centoslinux

    在CentOS上面使用yum出现以下情况:/usr/local/lib/liblzma.so.5: version `XZ_5.1.2alpha' not found (required by /lib64/librpmio.so.3) Centos使用yum出现/usr/local/lib/liblzma.so.5: version `XZ_5.1.2alpha' not found (required by /lib64/librpmio.so.3) 这种情况是因为安装编译了xz库,动态库加载顺序/usr/local/lib 大于  /usr/lib64 。卸载掉自行编译安装的xz库就可以解决(操作前请备份相关操作)

    数据之巅 发布于:2017年07月26 13:30:28
  • 将shell加密为"伪"二进制linux

    第一种方法(gzexe):这种加密方式不是非常保险的方法,但是能够满足一般的加密用途,可以隐蔽脚本中的密码等信息。它是使用系统自带的gzexe程序,它不但加密,同时压缩文件。使用方法:gzexe file.sh它会把原来没有加密的文件备份为 file.sh~ ,同时 file.sh 即被变成加密文件;第二种方法(shc):使用 shc 对 Linux shell 脚本加密.shc是一个专业的加密shell脚本的工具.它的作用是把shell脚本转换为一个可执行的二进制文件,这个办法很好的解决了脚本中含有IP、密码等不希望公开的问题.shc的下载地址:http://download.chinaunix.net/download/0010000/9479.shtml安装:tar zxvf shc-3.8.t...

    jason8482 发布于:2017年07月01 15:45:24
  • linux中动态链接库的搜索顺序linux

    在这里复习一下linux中程序对动态链接库的搜索顺序,如下所述:1.首先查看程序文件的.dynamic 段是否包含了一个叫DT_RPATH的项(它是一个以冒号分隔的库文件搜索目录列表)。   怎么设置这个选项?   需要在编译连接程序的时候使用-Wl,-rpath选项,假设一个程序test需要使用liblib.so库,如下所示进行编译连接:g++ -o test -L. -llib -Wl,rpath=./ test.cpp这样在执行test程序时,test便会先到./即当前目录下查找所需要的动态库liblib.so2.查找是否存在环境变量 LD_LIBRARY_PATH(它是一个以冒号分隔的库文件搜索目录列表)。   怎么设置这个选项?当然是设置linux下的环境变量就可以了。export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:./当然,这种方法是对当前登录生...

    风萧萧兮易水寒 发布于:2017年07月01 11:22:56
  • 如何让gcc在生成动态链接库的时候静态链接glibclinuxgccc

    我的代码://reload.cint func(int num){ return num++;}编译链接命令为:gcc -fPIC -shared reload.c -o reload.so使用ldd命令查看依赖的库时:linux-vdso.so.1 => (0x00007ffe6aa93000)libc.so.6 => /usr/lib64/libc.so.6 (0x00007f27feb97000)/lib64/ld-linux-x86-64.so.2 (0x00007f27ff169000)这个动态库依赖glibc的动态库。如果让他静态链接呢?$ gcc -fPIC -shared reload.c -o reload.so -nostdlib$ ldd reload.sostatically linked这样,就可以达到效果。

    伏草惟存 发布于:2017年07月01 10:01:10
  • 为什么中断处理函数中不能使用printf语句signallinux

    一个ISR应该避免调用不可重入函数。一些标准库函数是不可重入的,如经常实现的malloc和printf。因为中断可能发生在执行任务中,因为任务可能是在“malloc”的函数调用中,如果ISR调用此相同的不可重入函数,由此产生的行为可能是灾难性的。不可重入函数是指这样的一类函数,不可以在它还没有返回就再次被调用。例如printf,malloc,free等都是不可重入函数。因为信号可能在任何时候发生,例如在printf执行过程中,因此不能在信号处理函数里调用printf,否则printf将会被重入。 函数不可重入大多数是因为在函数中引用了全局变量。例如,printf会引用全局变量stdout,malloc,free会引用全局的内存分配表。不可重入函数指的是该函数在被调用还没有结束以前,再次被调用可能会产生错误。可重入函数不存在这样的问题。不可重入函数在实现时候通常使用了全局的资源,在...

    zzgzzg00 发布于:2017年06月20 15:10:56
  • linux标准输入读取字符backspace被变为^hcpplinuxtermios

    退格键(“backspace”)居然是^H^H,不符合我们使用习惯,我们平常使用退格键都习惯删除上一个字符。这属于终端属性的范畴。可以通过stty来实现或者在程序中tcgetattr+tcsetattr结合实现。设置命令设置当前终端的属性stu@ubuntu:~/test1$ stty erase ^H 在bash下:$ stty erase ^?  或者把 stty erase ^? 添加到.bash_profile中。  在csh下:$ stty erase ^H  或者把 stty erase ^H 添加到.cshrc中  程序中设置当前终端属性测试代码int main(vo...

    伏草惟存 发布于:2017年06月17 16:47:39
  • linux下的强大工具定位内存泄露 - mtracelinuxmtrace

      一谈到内存泄露, 多数程序员都闻之色变。 没错, 内存泄露很容易引入, 但很难定位。  以你我的手机为例(假设不经常关机), 如果每天泄露一些内存, 那么开始的一个星期, 你会发现手机好好的, 当内存泄露积累到一定程度,  那就是各种卡死了, 系统异常, 最后死机, 不得不重启。        如果搞开发, 遇到内存泄露问题, 那就呵呵了。 你可能先得花好几天来复现问题(泄露积累), 然后需要花好几天来定位问题和修改问题, 然后又要花好几天来验证问题, 而且, 很有可能没法一次改好, 上述流程又要循环了。 确实挺苦逼的。        我个人认为, 在内存泄露问题上, 主动预防比被动定位要划算得多, 但无论你怎么预防, 总有掉链子的时候, 所以, 有时候不得不去被动定位内存泄露...

    myd620 发布于:2017年06月16 16:43:57
  • 使用truss、strace或ltrace诊断"疑难杂症" Segmentation fault排查linuxdebug

    进程无法启动,软件运行速度突然变慢,程序的"Segment Fault"等等都是让每个Unix系统用户头痛的问题,本文通过三个实际案例演示如何使用truss、strace和ltrace这三个常用的调试工具来快速诊断软件的"疑难杂症"。truss和strace用来 跟踪一个进程的系统调用或信号产生的情况,而 ltrace用来 跟踪进程调用库函数的情况。truss是早期为System V R4开发的调试程序,包括Aix、FreeBSD在内的大部分Unix系统都自带了这个工具;而strace最初是为SunOS系统编写的,ltrace最早出现在GNU/Debian Linux中。这两个工具现在也已被移植到了大部分Unix系统中,大多数linux发行版都自带了strace和ltrace,而FreeBSD也可通过Ports安装它们。你不仅可以从命令行调试一个新开始的程序,...

    风萧萧兮易水寒 发布于:2017年06月15 09:49:36
  • Linux下设置终端属性,输入字符不回显到屏幕linuxtermios

    #include <stdio.h> #include <stdlib.h> #include <termios.h> #include <unistd.h> #define LENGTH 20 int main() { char password[LENGTH]; int len = 0; int ch; struct termios oldt,newt; printf("input your password\n"); while(1) { tcgetattr(STDIN_FILENO,&oldt); newt = oldt; n...

    数据之巅 发布于:2017年06月14 11:58:40
  • Linux 一次读取单个字符linuxctermios

    在linux c编程中出入标准输入时,通常在键入回车时才会刷新缓冲区,但有时候需要实时处理键入的数据那该怎么办呢?我们可以修改当前终端属性以达到这种效果。#include <termio.h> #include <stdio.h> int scanKeyboard() { int in; struct termios new_settings; struct termios stored_settings; tcgetattr(0,&stored_settings); new_settings = stored_settings; new_settings.c_lflag &= (~ICANON); new_settings.c_cc[VTIME] = 0; tcgetattr(...

    Jess_喵 发布于:2017年06月14 11:31:42
  • Linux下注册在程序exit之后再执行的代码--atexit()clinux

    对C语言有所了解的人都知道main函数是整个程序的入口,但是其实不然,在内核中可以使用链接器来设置程序的开始地方。当内核使⽤⼀个exec函数执⾏C程序时,在调⽤main函数之前先调⽤⼀个特殊的启动例程,可执⾏程序将此例程指定为程序的起始地址。启动例程从内核获取命令⾏参数和环境变量,然后为调⽤main函数做好准备。      前面我们关注的是程序开始进入时的调用函数,而atexit函数是一个特殊的函数,它是在正常程序退出时调用的函数,我们把他叫为登记函数(函数原型:int atexit (void (*)(void))):      ⼀个进程可以登记若⼲个(具体⾃⼰验证⼀下)个函数,这些函数由exit⾃动调⽤,这些函数被称为终⽌处理函数, atexit函数可以登记这些函数。 exit调⽤终⽌处理函数的顺序和atexit登记...

    jason8482 发布于:2017年06月13 16:17:21
  • 解决Centos7下无法安装xface的情况xfacelinux

    再执行CentOS最小化安装的完成之后,继续安装桌面坏境。这次我选择的是安装xface。但是以往使用yum groupinstall xfce4就可以完成安装,但是在这次的安装途中竟然显示搜索不到xface使用yum search xface也无法搜索到,这可着实让人纳闷了很久。最后解决方法为:首先安装epel-release包,第三方软件库yum install epel-release安装完成之后使用该软件包进行安装xface,并不能直接使用第一次我们使用的命令来安装哦。使用下述命令yum --enablerepo=epel -y groups install "Xfce"待安装完成之后,xface已经成功安装到系统中。解决!----------------------------------------------------------------添加启动配置echo "exec ...

    风萧萧兮易水寒 发布于:2017年05月10 16:50:33
  • Linux CURL或WGET无法解析域名,但是用ping正常解析解决办法。linuxcurl

    前言:    在使用Centos7下载文件的时候出现了个奇怪的现象,使用curl或wget均不能解析域名       但是使用ping进行域名解析完全正常            或者在使用yum makecache 更新仓库的时候也会出现Could not resolve host的情况。原因分析:    首先,出现这种问题的第一反应是想到肯定是dns解析的问题,修改了dns解析后发现仍是这样。    最后进行查找了一些资料后才得知,通过curl(依赖libcurl)的程序。如果开启了IPv6,curl默认会优先解析IPv6,在对应域名没有IPv6的情况下,会等待IPv6dns解析失败timeout之后才按以前的...

    醉眼识朦胧 发布于:2017年04月28 11:06:36
  • Linux环境的日志资源和限制linux

    日志:系统运行时或者程序运行时会产生很多信息,通常将其保存于/var/log或者/usr/admUNIX规范提供了一个产生信息的接口#include <syslog.h>void syslog(int priority, const char *message, arguments...);priority 是一个严重级别与一个设施值的按位或,根据不同的系统配置,不同的严重级别系统会做出不同的动作严重级别:LOG_EMERG 紧急情况LOG_ALERT 高优先级故障LOG_CRIT 严重错误LOG_ERR 错误LOG_WARNING  警告LOG_NOTICE 需要注意的特殊情况LOG_INFO 一般信息LOG_DEBUG 调试信息设施值:LOG_USER,LOG_LOCAL0~LOG_LOCAL7message、argument : 与printf的用法类似特别的%...

    AlfredZhao 发布于:2017年02月10 09:36:02
  • linux中的shell也可以有文件锁,你知道吗?shell文件锁linux

    经常在 shell 脚本里要阻止其它进程,比如 msmtp 自带的mail queue 脚本,这个脚本的互斥做法是不正确的,下面介绍下发现的三个通过文件达到互斥的正确做法。1. util-linux 的 flock这个命令有两种用法:  flock LOCKFILE COMMAND  ( flock -s 200; COMMAND; ) 200>LOCKFILEflock 需要保持打开锁文件,对于第二种使用方式并不方便,而且 -s 方式指定文件句柄可能冲突。好处是不需要显式的解锁,进程退出后锁必然释放。2. liblockfile1 的 dotlockfile号称最灵活可靠的文件锁实现。其等待时间跟  -r 指定的重试次数有关,重试时间为 sum(5, 10, ..., min(5*n, 60), ...).锁文件不需要保持打开, 带来的问题是需要用 t...

    伏草惟存 发布于:2017年01月07 13:05:57
  • 我对与LInux进程权限的理解linux进程权限

    Linux 进程权限分析在linux下,关于文件权限,大部分人接触比较多,也比较熟悉了解.但是对进程权限一般知之甚少。本文总结一下linux系统下进程权限问题和现象。需要强调的是,本文是linux系统下讨论,因为linux和unix有很多不同的地方,并且各个不同的unix系统也有很多不同。先开门见山的列出本文讨论对象:ruid(实际用户id: real userid)、euid(有效用户用户:effective userid), suid(保存用户id:saved userid)、fuid(文件系统用户id)。除了上面4个,还涉及到一个位 设置用户id位(set user id bit),,即我们通常所说的处rwx之外那个s标志位。另外,本文主要讨论userid,groupid规则基本一样,例如rgid, egid, sgid, fgid等,本文就不做组id方面的重复讨论了。首先,查看这几...

    数据之巅 发布于:2017年01月06 10:53:43