控制 Linux 能否创建核心转储文件 coredump

Linux系统能否创建核心转储文件coredump,以及core文件的大小限制,是由当前的shell控制,因此要通过相关shell进行修改: (1)查看当前shell对核心文件的限制, bash使用: ulimit -c,对于csh或tcsh, 使用limit进行查看 (2)修改对核心文件的限制, 对于bash,使用命令 ulimit -c N ,这里的N是核心文件的最大大小,以千字节KB为单位;N为0表示禁止创建核心文件; 如果想取消对大小的限制,那么要用 ulimit -c unlimited,即可以无限大。 对于csh或tcsh,用命令 limit coredumpsize N,这里的N以字节B为单位。 (3)修改之后可以继续用(1)里的方法查看效果。

2015年4月16日 · 1 分钟 · Jid

Linux/BSD/Unix 更改用户的登录shell

可以通过一条命令更改用户的shell类型,如下: (1)确保系统安装了需要的shell,比如csh $ which csh /bin/csh (2)为yourname用户设置shell类型 $ chsh -s /bin/csh yourname

2015年4月15日 · 1 分钟 · Jid

Linux/UNIX: find 命令用法

find命令是一个无处不在命令,是Linux中最有用的命令之一。 find命令用于在一个目录及子目录中搜索文件,可以指定一些匹配条件,如按文件名、文件类型、用户甚至是时间戳查找文件。 下面就通过实例来体验下find命令的强大。 1、find命令的一般形式 man文档中给出的find命令的一般形式为: find[-H] [-L] [-P] [-D debugopts] [-Olevel] [path...] [expression] 其实[-H] [-L] [-P] [-D debugopts] [-Olevel]这几个选项并不常用,上面的find命令的常用形式可以简化为: find[path...] [expression] path:find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录 expression:expression可以分为——“-options [-print -exec -ok …]” -options,指定find命令的常用选项,下节详细介绍 -print,find命令将匹配的文件输出到标准输出 -exec,find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为’command’ { } ;,注意{ }和\;之间的空格 find./ -size 0 -exec rm {} ; 删除文件大小为零的文件 (还可以以这样做:rm -i find./ -size 0 或 find./ -size 0 | xargs rm -f &) 为了用ls -l命令列出所匹配到的文件,可以把ls -l命令放在find命令的-exec选项中:find. -type f -exec ls -l { } ; 在/logs目录中查找更改时间在5日以前的文件并删除它们:find/logs -type f -mtime +5 -exec rm { } ; ...

2015年4月14日 · 2 分钟 · Jid

开始使用C++11的9个理由

如果你的代码工作正常并且表现良好,你可能会想知道为什么还要使用C++ 11。当然了,使用用最新的技术感觉很好,但是事实上它是否值得呢? 在我看来,答案毫无疑问是肯定的。我在下面给出了9个理由,它们分为两类:性能优势和开发效率。 获得性能优势 理由1:move语义(move semantics)。简单的说,它是优化复制的一种方式。有时候复制很显然是浪费的。如果你从一个临时的string对象复制内容,简单的复制指针到字符缓冲区将比创建一个新的缓冲区再复制要高效得多。他之所以能工作是因为源对象超出了范围。 然而,在这以前C++并没有判断源对象是不是临时对象的机制。move语义通过除了复制操作外还允许你有一个move构造函数(move constructor)和一个move赋值运算(move assignment)符来提供这个机制。 你知道吗?当你在Visual Studio 2010中使用标准库中的类如string或vector时,它们已经支持move语义了。这可以防止不必要的的复制从而改善性能。 通过在你的类中实现move语义你可以获得额外的性能提升,比如当你把它们存储到STL容器中时。还有,move语义不仅可以应用到构造函数,还可以应用到方法(如vector的push_back方法)。 理由2:通过使用类别属性(type traits,如is_floating_point)和模板元编程(template metaprogramming,如enable_if template),你可以为某些特定的类型定制模版,这可以实现优化。 理由3:哈希表现在已经是标准实现的了,它提供更快速的插入、删除和查找,这在处理大量数据时很有用。你现在可以随便使用unordered_map, unordered_multimap, unordered_set 和unordered_multiset这几种数据结构了。 提高效率 提高效率不仅都是在代码性能方面,开发时间也是宝贵的。C++ 11可以让你的代码更短、更清晰、和更易于阅读,这可以让你的效率更高。 理由4:auto关键字可以自动推断类型,所以下面的代码: vector<vector<MyType>>::const_iterator it = v.begin() 现在可以很简单的写成: auto it = v.cbegin() 尽管有些人会说,它隐藏了类型信息,在我看来它利大于弊,因为它减少了视觉混换并展示了代码的行为,还有它可以让你我少打很多字! 理由5:Lambda表达式提供了一种方法来定义匿名方法对象(实际上是闭包),这是代码更加线性和有规律可循。这在和STL算法结合使用时很方便: bool is_fuel_level_safe() { return all_of(_tanks.begin(), _tanks.end(), [this](Tank& t) { return t.fuel_level() > _min_fuel_level; }); } 理由6:新的智能指针(smart pointer)替换了有问题的auto_ptr,你可以不用担心内存的释放并移除相关释放内存的代码了。这让代码更清晰,并杜绝了内存泄露和查找内存泄露的时间。 理由7:把方法作为first class object是一个非常强大的特性,这让你的代码变得更灵活和通用了。C++的std::function提供了这方面的功能。方法提供一种包装和传递任何可调用的东西-函数指针, 仿函数(functor), lambda表达式等。 理由8:还有许多其它小的功能,如override、final关键字和nullptr让你的代码意图更明确。对我来说,减少视觉混乱和代码中能够更清楚地表达我的意图意味着更高兴、更高效。 另一个开发效率的方面是错误检测。如果你的错误在运行时发生,这意味着你至少需要运行软件,并可能得通过一系列步骤来重现错误,这需要时间。 C++ 11提供了一种方法来检查先决条件并尽早的在可能的时机捕获错误-编译过程中,在你运行代码前。这就是理由9。 这是通过静态断言(static_assert)和类别属性模版实现的。这种方法的另一个好处是,它不需要占用任何的运行时开销,没有什么性能损失! 现在开始掌握C++ 11 在C++ 11标准中除了上描述的还有更多的改动和新功能,它需要一整本数来描述。不过,我相信它们是值得你花时间去学习的。你将省去以往花在提高效率上的时间。很多主流的编译器已经开始支持C++ 11的一些标准了。还等什么?开始吧! ...

2015年4月13日 · 1 分钟 · Jid

安装 ibus 输入法

最小化安装需要: install ibus ibus-pinyin ibus-table ibus-gtk 然后,必须退出后重登录才能正常使用。

2015年4月12日 · 1 分钟 · Jid

修改Firefox回退键(backspace)

在Firefox内后退或前进最好用 Alt+方向键 或 Ctrl+[ 、Ctrl+],这也是在Linux/MacOS上的习惯。 但是,在Windows上大家更习惯Backspace键。 下面修改Firefox的配置使得在Linux上也可以用Backspace进行回退。 在地址栏内输入about:config,然后在打开的界面里搜索关键字backspace,通过双击把值改为0即可。 另外,贴一个Firefox的全部快捷键: http://www.mouserunner.com/FF_Shortcuts1Printable.html

2015年4月11日 · 1 分钟 · Jid

Linux 安装 rpm 安装包

安装、卸载、查看、升级rpm (1)用RPM安装软件包,最简单的命令如下: # rpm -ivh foo-1.0-l.i386.rpm (这里讲的软件包是foo-1.0-l.i386.rpm,以下都是) foo#################### 下面rpm就会输出该软件包的名称,并显示一个状态条。安装很简单。 (2)拆除已安装的软件包 要反安装软件包foo,只需输入以下这行命令: # rpm -e foo 注意:软件包名是foo,而不是rpm文件名"foo-1.0-l.i386.rpm"。 (3)升级软件包 升级软件类似于安装软件: # rpm -Uvh foo-2.0-l.i386.rpm foo#################### 用户要注意的是:rpm会自动反安装相应软件包的老版本。 如果老版本软件的配置文件通新版本的不兼容,rpm会自动将其保存为另外一个文件,用户会看到下面的信息: saving /etc/foo.conf as /etc/foo.conf.rpmsave 这样用户就可以自己手工去更改相应的配置文件。 另外如果用户要安装老版本的软件,用户就会看到下面的出错信息: # rpm -Uvh foo-1.0-l.i386.rpm foo packag foo-2.0-l(which is newer) is already installed error:foo-1.0-l.i386.rpm cannot be installed 如果用户要强行安装就使用-oldpackage参数。 (4)查询软件包 用户可以用 rpm -q 在rpm的数据库中查询相应的软件,rpm会给出软件包的名称,版本,发布版本号,例如: # rpm -q foo foo-2.0-l 下面是查询时可以使用的特定参数: -a 查询目前系统安装的所有软件包。 -f 文件名查询包括嘎文件的软件包。 -F 同-f参数,只是输入是标准输入(例如 find /usr/bin | rpm -qF) -q 软件包名 : 查询该软件包 -Q 同-p参数,只是输入是标准输入(例如 find /mnt/cdrom/RedHat/RPMS | rpm -qQ) 下面是输出时的格式选择: -i 显示软件包的名称,描述,发行,大小,编译日期,安装日期,开发人员等信息。 -l 显示软件包包含的文件 -s 显示软件包包含的文件目前的状态,只有两种状态:normal和missing -d 显示软件包中的文档(如man,info,README等) -c 显示软件包中的配置文件,这些文件一般是安装后需要用户手工修改的,例如:sendmail.cf,passwd,inittab等 如果用-v参数就可以得到类似于ls -l的输出 (5)用rpm校验软件包 ...

2015年4月10日 · 1 分钟 · Jid

C/C++ Linux 程序员必须了解的 10 个工具

想成为 Linux 下专业的 C/C++ 程序员,下面工具都是必须要了解的。 基本命令 http://mally.stanford.edu/~sr/computing/basic-unix.html http://pangea.stanford.edu/computing/unix/shell/commands.php http://infohost.nmt.edu/tcc/help/unix/unix_cmd.html 编辑器 – vi, Emacs http://www.atmos.albany.edu/deas/atmclasses/atm350/vi_cheat_sheet.pdf http://cmgm.stanford.edu/classes/unix/emacs.html 构建工具 – make/Cmake http://frank.mtsu.edu/~csdept/FacilitiesAndResources/make.htm http://www.cmake.org/cmake/help/cmake_tutorial.html 调试器 – gdb http://www.cs.cmu.edu/~gilpin/tutorial/ 版本控制 – cvs, svn, git http://mrsrl.stanford.edu/~brian/cvstutorial/ http://www.cs.ubc.ca/~vailen/svn_howto.htm http://maverick.inria.fr/~Xavier.Decoret/resources/svn/index.html http://www.vogella.com/articles/Git/article.html 代码查看工具 – ctags, cscope http://www.linux-tutorial.info/modules.php?name=Howto&pagename=C-editing-with-VIM-HOWTO/random.html http://www.cs.washington.edu/education/courses/cse451/12sp/tutorials/tutorial_cscope.html http://cscope.sourceforge.net/cscope_vim_tutorial.html 进程间通讯机制 http://tldp.org/LDP/tlk/ipc/ipc.html 多线程库 – Pthreads, BOOST library https://computing.llnl.gov/tutorials/pthreads/ http://ashishgrover.com/boost-multi-threadingfor-c/ 内存工具 – Purify, Valgrind http://www.cprogramming.com/debugging/valgrind.html http://pages.cs.wisc.edu/~hasti/cs368/resources/purify.html GUI – Qt http://zetcode.com/gui/qt4/introduction/ http://www.digitalfanatics.org/projects/qt_tutorial/ http://doc.trolltech.com/4.3/tutorial.html 转自OSChina.net

2015年4月9日 · 1 分钟 · Jid

ubuntu 安装 Fcitx/搜狗 输入法

卸载系统已经安装的ibus sudo apt-get purge ibus ibus-* 添加fcitx作者的源 sudo add-apt-repository ppa:fcitx-team/nightly sudo apt-get update 安装sogou/搜狗输入法引擎 sudo apt-get install fcitx-sogoupinyin (可选)安装google拼音或sun拼音或五笔 sudo apt-get install fcitx-pinyin sudo apt-get install fcitx-googelpinyin sudo apt-get install fcitx-sunpinyin sudo apt-get install fcitx-table fcitx-wubi 重启系统或退出后重登陆 Enjoy Linux and Fcitx…

2015年4月8日 · 1 分钟 · Jid

Firefox切换中文或英文界面

安装Firefox的时候因为不喜欢火狐中文版自带的乱七八糟的插件,所以选择安装了英文版的。 现在想切换到中文版,毕竟中文版的字体看着习惯。 为了实现中英文切换,需要从官网上安装语言组件,然后改一个设置,很简单。 英文转中文 安装中文语言组件 这里以16.0.1为例进行说明,你需要找个自己对应的版本。 ftp://ftp.mozilla.org/pub/mozilla.org/firefox/releases/16.0.1/win32/xpi/ 在上面找到zh-CN.xpi,点击后安装 改设置 在地址栏内输入about:config,确认后搜索 general.useragent.locale,改为 zh-CN 保存后重启Firefox,现在界面就变成中文的了。 中文转英文 跟上面的过程很像,先安装en-US.xpi,然后把 general.useragent.locale 改为 en-US 即可.

2015年4月7日 · 1 分钟 · Jid