随笔分类 - Linux
Linux使用心得
摘要:如下内容节选自《Linux Crontab 定时任务 命令详解 》用crontab -e 添加要执行的命令添加的命令必须以如下格式:* * * * * /command path前五个字段可以取整数值,指定何时开始工作,第六个域是字符串,即命令字段,其中包括了crontab调度执行的命令。 各个字段之间用spaces和tabs分割。前5个字段分别表示: 分钟:0-59 小时:1-23 日期:1-31 月份:1-12 星期:0-6(0表示周日)还可以用一些特殊符号: *: 表示任何时刻 ,: 表示分割 -:表示一个段,如第二端里: 1-5,就表示1到5点 /n : 表示每个n的单位执行一次,如.
阅读全文
摘要:有需求使用JNI调用,籍着这个机会按照《Linux下测试Java的JNI(Java Native Interface) 》上进行了下测试。这篇文章记录得很清楚了,对原理未做深入的分析,希望今后有机会分析下(不主做Java)。测试的基本的过程都是类似的,在此也不贴代码了。给个编译max的Makefile吧,有需要的人拿去吧。JAVA_HOME=/usr/local/java/jdkcflags=-I ${JAVA_HOME}/include \ -I ${JAVA_HOME}/include/linuxlflag= -L ${JAVA_HOME}/...
阅读全文
摘要:受到《autojump: 在命令行下快速更改目录》的鼓动,决定试用下这个软件。但ubuntu下的源貌似有些问题,sudo apt get install autojump后,死活提示j命令无法找到。无奈只能手动安装。官方的地址为https://github.com/joelthelion/autojumpgit clone https://github.com/joelthelion/autojump.git进入clone的目录,执行./install.sh其会在~/目录下建立.autojump文件夹。最后其会有提示如果你是zsh,添加如下到 ~/.zshrc[[ -s ~/.autojump
阅读全文
摘要:这只是一篇流水帐,记录如何安装Java。在Ubuntu 下管理软件很方便,但安装的Java是opensdk。如果在某些条件下,需要安装Sun (Oracle)的Java,则需要自己手工安装。一般情况下,Linux下的软件都算是绿色软件,直接拷贝就可以使用。从http://www.oracle.com/technetwork/java/javase/downloads下载Java在具体环境下的安装包(主要区分x86_64和x32)。当前下载的文件为jdk-7u25-linux-x64.tar.gz jre-7u25-linux-x64.tar.gz将其拷贝到安装目录,如//usr/local/.
阅读全文
摘要:10 Useful du (Disk Usage) Commands to Find Disk Usage of Files and DirectoriesThe Linux “du” (Disk Usage) is a standard Unix/Linux command, used to check the information of disk usage of files and directories on a machine. The du command has many parameter options that can be used to get the results
阅读全文
摘要:一般情况下,我们重装ubuntu的系统会做如下几个事情1)修改默认的程序更新源2)开始根据需求安装软件。3)配置文件(如vim/tmux等)对于步骤,只需要cp /etc//etc/apt/sources.list即可第二个步骤,nixCraft 提供了一个有用的技巧。1. 执行备份操作:dpkg --get-selections > installed-software.log,这将当前系统中已安装的软件保存到 installed-software.log 中。 2. 在还原时使用 dpkg --set-selections < installed-software.log 导入
阅读全文
摘要:使用过些linux终端,比如Tilda、Terminator。之前最经常用的是Terminator,其可以上下左右分屏,比较方便,但其有个缺点是经常无故崩溃。后来遇到Tmux,根据网上的设置配置了一下,现在比较顺手了。现在最喜欢其session保存功能。之前用xshell连接机器,最苦逼的是在长时间不使用后,其会断掉,所有的工作就没了。启用tmux后,xshell可能还是会断,但重新连接session后,工作会保存起来。具体的配置参考和使用请参考https://wiki.freebsdchina.org/software/t/tmux
阅读全文
摘要:使用一个虚拟机服务,其时区设置的为格林兰标准时区,我北京时区在东八区,较其快八个小时。修改时区需要执行tzselect一步步选择下来,注意确认后的informationTherefore TZ='Asia/Shanghai' will be used.Local time is now: Fri Aug 2 09:28:07 CST 2013.Universal Time is now: Fri Aug 2 01:28:07 UTC 2013.Is the above information OK?1) Yes2) No#? 1You can make this change
阅读全文
摘要:ubuntu下出现-bash: warning: setlocale: LC_CTYPE: cannot change locale (en_GB.UTF-8)警告解决方法:#vim ~/.bashrc添加LC_ALL="en_US"然后source ~/.bashrc 即可
阅读全文
摘要:在gdb 7.0版本之后,对于基础数据结构,如vector<int> 如果在gdb中调用p my_vect,得到std::vector of length 3, capacity 4 = {10, 20, 30}但对于自定义数据结构支持不好,此时可以下载一个配置文件http://www.yolinux.com/TUTORIALS/src/dbinit_stl_views-1.03.txt添加到gdb的配置中。catdbinit_stl_views-1.03.txt >>~/.gdbinit在调试的时候,可以通过pstring,pvector打印出STL的数据结构。比较方
阅读全文
摘要:Redis 概况Redis是一款开源的、高性能的键-值存储(key-value store)。它常被称作是一款数据结构服务器(data structure server)。Redis的键值可以包括字符串(strings)、哈希(hashes)、列表(lists)、集合(sets)和 有序集合(sorted sets)等数据类型。 对于这些数据类型,你可以执行原子操作。例如:对字符串进行附加操作(append);递增哈希中的值;向列表中增加元素;计算集合的交集、并集与差集等。Redis 安装在主页 Redis下载稳定版本,通过wget http://redis.googlecode.com/fi
阅读全文
摘要:借鉴ucos消息队列中的实现,对内存池只提供信息的管理头部,由用户管理内存的分配与释放。借用了STL中的管理思路typedef union object_t{ union object_t *next; //下一个对象 char data[1];}object_t;注意其为union类型,next和data复用typedef struct ares_block{ size_t object_size; //单个对象的大小 size_t block_size; //占用的空间总数 size_t count; ...
阅读全文
摘要:今天遇到一个奇怪的问题。linux环境下gcc,socket中UDP的recvfrom函数原型ssize_t recvfrom(int sockfd,void *buf,int len,unsigned int flags, struct sockaddr *from,socket_t *fromlen);网上给出的最基本的UDP—echo服务器测试基本的是可以的。关于recvfrom的代码如下 char buf[BUFF_SIZE]; struct sockaddr_in their_addr; int sin_size; memset(buf,len,0); ...
阅读全文
摘要:相对于《简单多线程拷贝单文件v2》中,将文件下载的任务分块也作为线程,可以动态添加文件块任务。即是生产者与消费者模型。用了本Blog的《消息队列的实现》中的实现。用了《struct 初始化》中提到的参考代码方式。作为基类的msg_block_t。typedef struct ares_msg_block{ pthread_t pid; enum msg_object_type msg_type; void *data;///<*用于扩展的私有数据指针}msg_block_t;继承的msg_block_t的msg_thread_block_ttypedef s...
阅读全文
摘要:今天调试程序,总是遇到segment fault,由于的多线程程序,gdb调试很麻烦,非常不爽,但是Bug还总是在哪里需要解决啊。只得想办法。网上说可以生成core文件,再用gdb调试core,至少可以定位到哪里出错。于是Google。segment fault产生的原因主要是与指针操作相关。《GDB调试core文件样例(如何定位Segment fault) 》详细介绍了相关错误原因View Code 一 造成segment fault,产生core dump的可能原因1.内存访问越界 a) 由于使用错误的下标,导致数组访问越界 b) 搜索字符串时,依靠字符串结束符来判断字符串是否结束,但是字
阅读全文
摘要:相对《简单多线程拷贝单文件示例》扩展了任务队列。主要核心在于将单个大文件分成多份(比如100),形成一个任务,并将任务用链表链接起来,形成一个队列(FIFO)或者栈(无非是顺序不同)。相对第一版来说,thread_block的定义发生了些变化,但用户接口未变。typedef struct thread_block{ int infd; ///<*文件句柄 int outfd; size_t start_position;///<*文件的写入起始位置 size_t block_size; ///<* 文件写入的终止位置[first ,last)开区间 /...
阅读全文
摘要:整理以前的代码,发现这个还有个尾巴没有做。于是花了点时间捡起来。代码如下View Code /* * ===================================================================================== * * Filename: copy.c * * Description: 多线程拷贝文件 * * Version: 1.0 * Created: 03/17/2012 04:53:09 AM * Revision: none * Compile...
阅读全文
摘要:消息队列的实现转换为经典的生产者——消费者模型。网上很多实现只能在生产者:消费 = 1:1的情况下运行。本实现参考《Unix 网络编程——卷二 进程间通信》,可以在任意配比下运行。还参考了《一种同步消息队列模型(C++)》,但由于 STL中的deque不必担心内存分配问题,所以实现只有互斥相关的操作。来看基础消息的定义,作为基类——有其它消息类型可以模拟C++中的继承机制。typedef struct ares_msg_block{ pthread_t pid; void *msg;}msg_block_t;共享内存区域,即循环消息队列的结构定义typedef s...
阅读全文
摘要:在LwIP移植的代码中有信号量相关接口,但是是通过线程来模拟的。以前读过,最近才感觉它是在 利用POSIX互斥锁和条件变量实现POSIX的信号量。在《Unix网络编程 卷二进程间通信》中有用System V模拟 POSIX信号量的论述。LwIP是一个轻型TCP/IP协议栈,它利用操作系统模拟层实现了信号灯。主要有如下接口函数:/**新建一个信号灯,并初始化灯的值为count*/sys_sem_t sys_sem_new(u8_t count);/**将标示符为sem的信号灯释放掉。*/void sys_sem_free(sys_sem_t sem);/**将标示符为sem的信号灯的值加1*/v
阅读全文
摘要:Programming LanguagesCAPIBerkeley Socket APIData Structure used to store socked details1234567struct sockaddr_in6 {u_char sin6_len; // length of this structureu_char sin6_family; // AF_INET6u_int16m_t sin6_port; // Transport layer port #u_int32m_t sin6_flowinfo; // IPv6 flow informationstruct in6_ad
阅读全文

浙公网安备 33010602011771号