Skip to content

Latest commit

 

History

History
722 lines (527 loc) · 42.3 KB

Linux学习之路.md

File metadata and controls

722 lines (527 loc) · 42.3 KB

Websit List

Linux常用命令

	rdate # set the system's date from a remote host. (sudo apt-get install rdate)
	grep -R "org.apache.commons.FileUtils" *
	grep -inr --color "ERROR" test_debug.log
	ps –fu $USER | grep java # 显示当前用户的所有线程
	ps -ef | grep 4736 # 查看4736端口是否被占用
	netstat -tulnp | grep mysqld # 查看mysqld的监听情况
    netstat –apn    ps -aux | grep pid   #先查进程号,再找到进程信息
	find . –name "*.log" | xargs grep error # 在当前目录的所有日志文件中查找关键词"error"
	ls -t `find . -name "*.log"` #列出最近修改的文件
    glxinfo | grep rendering # 查询OpenGL是否打开。提示:direct rendering: Yes 表明启动正常
    cfdisk -Ps # 查看磁盘分区的用法   cfdisk   -Ps 磁盘设备名 只有一个硬盘也可以用 cfdisk -Ps
    cfdisk -Ps /dev/sda
    sfdisk -l
	
	watch "ls -al myfile" 监控文件变化

    cat /proc/cpuinfo | grep flags # 查看cpuinfo中是否有lm,如果有lm表示支持64位,lm的意思是long mod
    cat /proc/cpuinfo | grep flags | grep lm | wc -l # 输出结果大于 0 表示支持64位
    cat /proc/cpuinfo |grep "physical id"|sort |uniq|wc -l # 查看物理CPU的个数
    cat /proc/cpuinfo |grep "processor"|wc -l # 查看逻辑CPU的个数
    cat /proc/cpuinfo |grep "cores"|uniq # 查看CPU是几核
    cat /proc/cpuinfo |grep MHz|uniq # 查看CPU的主频
    cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c # 看到有8个逻辑CPU, 也知道了CPU型号
    # 8  Intel(R) Xeon(R) CPU            E5410   @ 2.33GHz
    
    cat /proc/cpuinfo | grep physical | uniq -c # 说明实际上是两颗4核的CPU
    # 4 physical id      : 0
    # 4 physical id      : 1

    getconf LONG_BIT # 说明当前CPU运行在32bit模式下, 但不代表CPU不支持64bit
    # 32

    cat /etc/issue | grep Linux # 查看当前操作系统发行版信息

    apt-cache # query the APT cache
    apt-file search libz.so.1 # APT package searching utility
    apt-get
    apt-cdrom # apt-cdrom is a tool to add CDROM's to APT's source list. 
    apititude
    dpkg

    sudo sh *.sh # 打开.sh文件

    ./*** # 打开其它可执行文件,如果没有可执行权限,需要chmod

    man nautilus
    man ed

    file explore

    xdg-open # 命令行快速打开各类型文件
    mplayer xxx.mp3 # 使用mplayer打开

    fc-list :lang=zh-cn # 查看字体

    uname -a               # 查看内核/操作系统/CPU信息
    head -n 1 /etc/issue   # 查看操作系统版本
    cat /proc/cpuinfo      # 查看CPU信息
    hostname               # 查看计算机名,hostname name只能暂时修改,重启后失效,如果需要永久修改,使用/etc/hostname文件
    lspci -tv              # 列出所有PCI设备
    lsusb -tv              # 列出所有USB设备
    lsmod                  # 列出加载的内核模块
    env                    # 查看环境变量资源
    free -m                # 查看内存使用量和交换区使用量
    df -h                  # 查看各分区使用情况
    du -sh <目录名>        # 查看指定目录的大小
	du --max-depth=1 dir   # 查看指定目录指定深度的大小
    grep MemTotal /proc/meminfo   # 查看内存总量
    grep MemFree /proc/meminfo    # 查看空闲内存量
    uptime                 # 查看系统运行时间、用户数、负载
    cat /proc/loadavg      # 查看系统负载磁盘和分区
    mount | column -t      # 查看挂接的分区状态
    fdisk -l               # 查看所有分区
    swapon -s              # 查看所有交换分区
    hdparm -i /dev/hda     # 查看磁盘参数(仅适用于IDE设备)
    dmesg | grep IDE       # 查看启动时IDE设备检测状况网络
    ifconfig               # 查看所有网络接口的属性
    route -n               # 查看路由表
    netstat -lntp          # 查看所有监听端口
    netstat -antp          # 查看所有已经建立的连接
    netstat -s             # 查看网络统计信息进程
    ps -ef                 # 查看所有进程
    top                    # 实时显示进程状态用户
    w                      # 查看活动用户
    id <用户名>            # 查看指定用户信息
    last                   # 查看用户登录日志
    cut -d: -f1 /etc/passwd   # 查看系统所有用户
    cut -d: -f1 /etc/group    # 查看系统所有组
    crontab -l             # 查看当前用户的计划任务服务
    rpm -qa                # 查看所有安装的软件包
    rpm -q mysql   # 查看是否安装了mysql客户端

    netstat -anp | grep xxxx   #xxxx为端口号 Linux下查看某个端口下运行的是什么程序
    lsof -i :xxxx    #xxxx为端口号

    cat /proc/version # 查看内核版本命令
    lsb_release -a ##查看linux版本
    cat /etc/debian_version
    cat /etc/issue
    file /bin/bash
    file /bin/cat
    cat /etc/debian_version //Only for Debian
    cat /etc/redhat-release //Only for Redhat
    rpm -q redhat-release //Only for Redhat
    redhat-release-5Server-5.6.0.3
    
    # 注:这种方式下可看到一个所谓的release号,比如上边的例子是5,这个release号和实际的版本之间存在一定的对应关系,如下:
    # redhat-release-3AS-1 -> Redhat Enterprise Linux AS 3
    # redhat-release-3AS-7.4 -> Redhat Enterprise Linux AS 3 Update 4
    # redhat-release-4AS-2 -> Redhat Enterprise Linux AS 4
    # redhat-release-4AS-2.4 -> Redhat Enterprise Linux AS 4 Update 1
    # redhat-release-4AS-3 -> Redhat Enterprise Linux AS 4 Update 2
    # redhat-release-4AS-4.1 -> Redhat Enterprise Linux AS 4 Update 3
    # redhat-release-4AS-5.5 -> Redhat Enterprise Linux AS 4 Update 4

    # man update-alternatives

    # Configure参数解释说明: autoconf: 16 Running configure Scripts

    # 把/dev/cdrom目录制作为镜像,名字为/root/rh1.iso,可以使用下面命令中的任意一条
    dd if=/dev/cdrom of=/root/rh1.iso
    #cat /dev/cdrom >;/root/1.iso
    mkisofs -r -o myiso.iso /dev/cdrom
    cp -r /home/user name.iso
	
	# man tailf
	# Linux下分割合并文: man split/cat
	# 生成目录树结构: man tree
	# rename命令: http://man.linuxde.net/rename

打印某一文件夹下的所有文件名及其行数

这里分别要考虑到该文件夹有或没有子文件夹的情况,用shell实现打印某一文件夹下的所有文件(如果是子文件夹下的文件,需要打印相对目录)及该文件的行数清单。列表类似这样:

filename1 100行
file/filename2 200行
.......

find -name "*" | xargs wc -l

加 -type f 参数,过滤掉对目录的wc

find -name "*" -type f | xargs wc -l

想要得到指定的格式,用万能的awk:

find -name "*" -type f| xargs wc -l | awk '{print $2" "$1"行"}'

find 后面可加指定目录,如"/etc/"

find "/etc/" -name "*" -type f| xargs wc -l | awk '{print $2" "$1"行"}'

修改默认打开文件的程序

linux 下全局的文件与程序的关联是通过/usr/share/applications/defaults.list文件来设置,该文件保存了个人文件与程序的关联的打开方式。安装了nero之后文件iso的文件默认使用archive manager打开,在~/.local/share/applications/mimeapps.list添加一行:

`application/x-cd-image=nerolinux.desktop;`

/usr/share/applications/defaults.list中添加一行:

`application/x-cd-image=nerolinux.desktop;`

图形界面下双击iso文件就使用nero打开了。

零碎问题

  • 联网问题:12.10以及之前的版本很好使,但是13.04之后,不仅校园网老是掉线,解决方法是在panel的网络菜单里面把“启用wifi”关掉。
  • 星级译王词典安装目录: /usr/share/stardict/dic
  • 字体目录: home/user/.font/
  • 查看快捷键:系统——首选项——键盘快捷键
  • 关闭盖子时的命令:在系统设置/电源中
  • 切换到Ubuntu gnome 经典桌面:注销unity桌面环境,然后选择登录环境为“经典桌面”即可进入。

Linux重装系统指南(Ubuntu)

  • 连上网络(ubuntu暂时关闭wifi)
  • 安装chrome,同步书签
  • 安装vim,移入配置文件
  • 修改主文件夹文件名
  • 安装金山wps,解决字体问题
     fedora:/opt/kingsoft/wps-office/office6/wps: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory
     yum install libstdc++-devel.i686
  • 安装Synaptic软件包管理器
  • 卸载libreoffice/firefox/youker-assistant/amazon
  • 重新启动计算机
  • 安装GLX-Dock并进行配置
  • 配置输入法(快捷键等)并重新登录
  • 安装clementine/osd-lyrics并进行配置,解决乱码问题,安装解码插件
  • 安装快盘,进行配快盘和ubuntu one
  • 安装filezilla/okular/meld
  • 卸载Rhythmbox/empathy/account-plugin-*
  • 安装font-manager

Linux重装系统指南(Fedora)

  • 安装gnome-tweak-tool设置工具

  • sudo yum install gnome-tweak-tool

  • 安装后在左上角【活动】里可以找到【优化工具】图标打开进行设置

  • 安装最快软件源插件:sudo yum install yum-plugin-fastestmirror

  • 安装下载加速插件:sudo yum install yum-presto -y

  • 安装鼠标右键【在终端中打开】:sudo yum install nautilus-open-terminal

  • 配置RPM Fusion

  • 卸载相关软件: firefox

  • 安装相关软件:gcc/Yumex/Compiz(ccsm)/Cariodock

  • 设置自动挂载文件系统fstab

  • 升级系统yum update

  • 安装vim

  • 删除旧内核

    1. 查看当前系统中已安装的内核相关包:# rpm -qa | grep kernel
    2. 查看当前使用的内核:# uname -r
    3. 确定要删除的内核:
    4. 删除内核:# yum remove kernel-...(内核版本名称)使用 yum remove 进行删除,会自动移除:/boot/grub/menu.lst 中的相关启动项

ubuntu更新问题

更新管理器在检查软件包的时候总是有如下问题

无法下载 cdrom://Ubuntu 8.10 _Intrepid Ibex_ - Release i386 (20081029.5)/dists/intrepid/main/binary-i386/Packages  请使用 apt-cdrom,通过它就可以让 APT 能识别该光盘。apt-get upgdate 不能被用来加入新的光盘。
无法下载 cdrom://Ubuntu 8.10 _Intrepid Ibex_ - Release i386 (20081029.5)/dists/intrepid/restricted/binary-i386/Packages  请使用 apt-cdrom,通过它就可以让 APT 能识别该光盘。apt-get upgdate 不能被用来加入新的光盘。
无法下载 http://cn.archive.ubuntu.com/ubuntu/dists/intrepid-backports/main/binary-i386/Packages.bz2  Hash 校验和不符
有一些索引文件不能下载,它们可能被忽略了,也可能转而使用了旧的索引文件。

解决方法:把 /etc/apt/sources.list里面有cdrom的几行删掉,或者利用软件中心或新立德包管理器把软件源终中的cdrom去掉。

解决金山wps字体问题

将字体解压到~/.fonts目录,然后重启wps即可。这些文件为微软版权所有,使用这些字体请自行确定拥有这些字体的使用授权(比如说有某版本windows授权即可)。另外据一部分用户反映,如果系统安装了xfonts-mathml可能导致符号无法显示。经过查证,发现是因为xfonts-mathml中也存在一个字体叫Symbol导致的。如果安装上述字体后仍存在乱码现象,请尝试移除xfonts-mathml包。

libreoffice中PPT字体便粗问题

Tools → Options... → LibreOffice → View → Graphics output (取消钩选Use hardware acceleration)

小企鹅输入法突然无法使用

查看一下是否安装了ibus,可在系统设置中的语言支持中重新把输入法改为ibus

主文件夹里的中文文件夹改成英文文件夹

打开终端,在终端下输入命令:

export LANG=en_US
xdg-user-dirs-gtk-update

这个时候会弹出一个配置界面,提示是否将中文目录切换为英文目录。选中不再提示,确定。系统会删除没有内容的中文目录,而有内容的目录会保持。并创建8个相应的英文目录如下:“Desktop”、“Download”、“Templates”、“Public”、“Documents”、“Music”、“Pictures”、“Videos”。此时,您在“位置”里看到的常用中文目录已经变成英文目录;

再执行:

export LANG=zh_CN.UTF-8

Wireshark

sudo apt-get install wireshark

出于安全方面的考虑,普通用户不能够打开网卡设备进行抓包,wireshark不建议用户通过sudo在root权限下运行,wireshark为ubuntu(Debian)用户提供了一种在非root下的解决方法。详细解释可以参考:

/usr/share/doc/wireshark-common/README.Debian  http://nariver.com/usr/share/doc/wireshark-common/README.Debian)

具体步骤:

sudo dpkg-reconfigure wireshark-common
press the right arrow and enter for yes
sudo chmod +x /usr/bin/dumpcap

glxgears

glxgears是一个测试你的Linux是否可以顺利运行2D、3D的测试软件。这个程序弹出一个窗口,里面有三个转动的齿轮,屏幕将显示出每五秒钟转动多少栅,所以这是一个合理的性能测试。窗户是可以缩放的,栅数多少极大程度上依赖于窗口的大小。如果你的显示卡够好,而且你的驱动程序也配合得很好,那齿轮就跑得越快。这里请记录下FPS数字(每秒的帧速度)以鉴别3D加速效果。

重装Ubuntu如何保留/home分区中的数据

windows系统可以在重装时只格式化C盘,从而保留其他分区的数据。 Ubuntu系统也可以,只要在安装系统时分出一个/home分区。你可以把Ubuntu的“/”分区看为windows的C盘,重装Ubuntu时只格式化“/”分区,不格式化“/home”,这样就可以保留“/home”中的数据

如何启用 Ubuntu 中的 root 帐号

和其它发行版本的Linux不同,Ubuntu Linux有一个与众不同的特点,那就是初次使用时,你无法作为root来登录系统,为什么会这样?这就要从系统的安装说起。对于其他Linux系统来说,一般在安装过程就设定root密码,这样用户就能用它登录root帐户或使用su命令转换到超级用户身份。与之相反,Ubuntu默认安装时,并没有给root用户设置口令,也没有启用root帐户。问题是要想作为root用户来运行命令该怎么办呢?没关系,我们可以使用sudo命令达此目的。sudo是linux下常用的允许普通用户使用超级用户权限的工具,该命令为管理员提供了一种细颗粒度的访问控制方法,通过它人们既可以作为超级用户又可以作为其它类型的用户来访问系统。这样做的好处是,管理员能够在不告诉用户root密码的前提下,授予他们某些特定类型的超级用户权限,这正是许多系统管理员所梦寐以求的。这里有必要说先简单一下sudo和su命令的区别:su命令是在不退出当前用户的情况下切换用户的工具,通过su可以在用户之间切换,如果超级权限用户root向普通或虚拟用户切换不需要密码,而普通用户切换到其它任何用户都需要密码验证。sudo是Unix/Linux平台上的一个非常有用的工具,它允许系统管理员分配给普通用户一些合理的“权利”,让他们执行一些只有超级用户或其他特许用户才能完成的任务这样一来,就不仅减少了root用户的登陆次数和管理时间,也提高了系统安全性。sudo设计者的宗旨是:给用户尽可能少的权限但仍允许完成他们的工作。我们可以简单的理解成:su获得稳定的超级用户(或其他用户权限),sudo获得暂时性的限制了的超级用户权限,一段时间之后会失效。

好,下面讲一下具体的设置方法:

1.为root设置一个root密码:$ sudo passwd root

之后会提示要输入root用户的密码,连续输入root密码

2.使用:$ su,并按照提示输入root密码,就可以在终端中切换成超级管理员用户身份了!

Linux用户添加sudoer

使用sudo可以在以非root用户登录时临时获得root权限,并执行需要的命令。可以使用sudo的用户可以叫做sudoer。

添加sudoer的方法(假设您已经安装sudo):执行

visudo or sudoedit

提示:有些发行版的sudo提供了sudoedit,有的则提供了visudo,功能上基本是一样的。你也可以使用其他编辑器如vi进行编辑/etc/sudoers,但由于文件是只读的,请强制保存(如w!)或去除只读属性再保存。查找

root ALL=(ALL) ALL

在下面加入

%adm ALL=(ALL) ALL

如果sudo时不想输入密码,可以把上句改成:

%adm ALL=(ALL) NOPASSWD: ALL

保存文件,然后执行

gpasswd -a 用户名 adm

然后这个用户就可以用sudo了。

linux无root权限安装软件

在有些公司是不会给开发人员root权限的,但是开发人员有时候也需要装一些软件。没有root权限是否可以成功安装软件呢?答案是yes。本文以安装nginx为例说明下如何操作。

没有root权限时往往也就没有权限操作一些系统目录,例如bin,usr等。所以在安装时需要配置将安装文件装在当前用户有权限操作的目录。

安装nginx首先要下载安装文件,具体的安装步骤如下:

    tar-zvxf nginx-1.2.3.tar.gz # 解压缩文件:
    cd ~
    mkdir nginx
    cd xxx
    ./configure—prefix=/xxx/yy/nginx
    make
    make install

正常情况下这样就成功安装了。和有root权限安装的区别在于./configure 需要指定安装文件的目录。

linux系统下无法访问电脑硬盘

    Error mounting /dev/sda6 at /media/qiaokaiming/20F47472F4744BD2: Command-line 'mount -t "ntfs" -o "uhelper=udisks2,nodev,nosuid,uid=1000,gid=1000,dmask=0077,fmask=0177" "/dev/sda6" "/media/qiaokaiming/20F47472F4744BD2"' exited with non-zero exit status 14: The disk contains an unclean file system (0, 0).
    Metadata kept in windows cache, refused to mount.
    Failed to mount '/dev/sda6': Operation not permitted
    The NTFS partition is in an unsafe state. Please resume and shutdown
    windows fully (no hibernation or fast restarting), or mount the volume
    read-only with the 'ro' mount option.

那个提示里有:Please resume and shutdown windows fully (no hibernation or fast restarting)。进win8把”快速启动“关掉就好了。控制面板》所有控制面板选项》电源选项》系统设置》关闭“启用快速启动”

/etc/profile和/etc/environment(Ubuntu)

先将export LANG=zh_CN加入/etc/profile ,退出系统重新登录,登录提示显示英文。将/etc/profile 中的export LANG=zh_CN删除,将LNAG=zh_CN加入/etc/environment,退出系统重新登录,登录提示显示中文。

原因是系统是先执行/etc/environment,后执行/etc/profile。/etc/environment是设置整个系统的环境,而/etc/profile是设置所有用户的环境,前者与登录用户无关,后者与登录用户有关。系统应用程序的执行与用户环境可以是无关的,但与系统环境是相关的,所以当你登录时,你看到的提示信息,象日期、时间信息的显示格式与系统环境的LANG是相关的,缺省LANG=en_US,如果系统环境LANG=zh_CN,则提示信息是中文的,否则是英文的。登陆系统时shell读取的顺序应该是 :

/etc/enviroment->/etc/profile-->$HOME/.profile-->$HOME/.env(如果存在)

如果同一个变量在用户环境(/etc/profile)和系统环境(/etc/environment)有不同的值那应该是以用户环境为准了。修改environment 之后,执行 source /etc/environment 可以立即生效。

fedora如何用yum清除无用的软件包

  • yum history [undo|redo|info|...]: yum的子命令,显示你yum的历史记录,并且可以撤销指定的记录(undo),重做指定记录(redo)等等,更多的功能看man yum
  • yum-plugin-remove-with-leaves:卸载软件包时把因此产生的叶子一起卸载掉,用的时候别加-y选项,看清楚了再确认,有些非常大的依赖树会把主要的系统组件卸载掉,具体用法安装完该插件以后看帮助:yum --help,这个yum插件应该就是最贴近你需求的,不过记住,慎用,如果能从yum history里查到记录的话,还是用yum history undo来操作比较安全。
  • yum-plugin-show-leaves: 执行安装/卸载以后,显示此次操作所产生的叶子,自动运行,无需要操作。
  • rpmreaper: 基于ncurses库的程序,通过基于文本的gui界面显示系统中的rpm依赖树,提供各种操作,具体的看man。

如何在Ubuntu中屏蔽一个网站

打开/etc/hosts文件,添加下面这行

127.0.0.1 domain.com

更换domain.com为你要屏蔽的网站,你完成了编辑处理后,保存该文件并退出。

lspci的使用

PCI和PCI Express,是计算机常使用的一种高速总线。操作系统中的PCI/PCI-E设备驱动以及操作系统内核,都需要访问PCI及PCI-E配置空间。PCI/PCI-E设备的正常运行,离不开PCI/PCI-E配置空间。通过读写PCI/PCI-E配置空间,可以更改设备运行参数,优化设备运行。本文介绍用户空间可以读取、修改、扫描PCI/PCIE设备的用户命令及使用。在Linux内核中,为PCI和PCI-E只适用了一种总线PCI(内核提供的总线系统),故访问PCI-E配置空间,也包括了PCI设备配置空间。读取PCI-E设备配置空间的命令是lspci。详细命令参数,可以使用man lspci来查看。命令默认输出结果是,当前系统的所有PCI/PCI-E设备。

Windows/Linux文本文件格式转换

DOS/Windows和Linux/Unix的文本文件换行格式不同,基于 DOS/Windows 的文本文件在每一行末尾有一个 CR(回车)和 LF(换行),而 UNIX 文本只有一个LF(换行)。

DOS/Windows文本文件格式转换成Linux/Unix文本文件格式: sed -e 's/.$//' mydos.txt > myunix.txt

说明:替代正则表达式与一行的最末字符匹配,而该字符恰好就是回车。我们用空字符替换它,从而将其从输出中彻底删除。

把Linux/Unix 文本文件格式转换成 DOS/Windows文本文件格式: sed -e 's/$/\r/' myunix.txt > mydos.txt

说明:'$' 正则表达式将与行的末尾匹配,而 '\r' 告诉 sed 在其之前插入一个回车。在换行之前插入回车,每一行就以 CR/LF 结束。

另外还有个方法,使用命令 :

    unix2dos filename
    dos2unix filename

获取某程序的完整路径名

当我们在Linux下用ps aux 看到有如下一个进程时:

root     19463  0.0  0.0   1508   272 pts/0    S    16:43   0:00 ./server-a

如何获得程序server-a所在的完整路径呢?从上面ps 的输出中可以看出19463是server-a的PID号,那么运行如下命令:cat /proc/19463/environ ,输出如下:

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/gamesGNOME_KEYRING_PID=2269USER=jiangxinLANGUAGE=zh_CN:XDG_SEAT=seat0TEXTDOMAIN=im-configCOMPIZ_CONFIG_PROFILE=ubuntuHOME=/home/jiangxinQT4_IM_MODULE=fcitxDESKTOP_SESSION=ubuntuXDG_SEAT_PATH=/org/freedesktop/DisplayManager/Seat0GTK_MODULES=overlay-scrollbar:unity-gtk-moduleGNOME_KEYRING_CONTROL=/run/user/1000/keyring-wrFl7VQT_QPA_PLATFORMTHEME=appmenu-qt5MANDATORY_PATH=/usr/share/gconf/ubuntu.mandatory.pathIM_CONFIG_PHASE=1SESSIONTYPE=gnome-sessionLOGNAME=jiangxinGTK_IM_MODULE=fcitxDEFAULTS_PATH=/usr/share/gconf/ubuntu.default.pathXDG_SESSION_ID=c3GDM_LANG=zh_CNXDG_SESSION_PATH=/org/freedesktop/DisplayManager/Session0XDG_RUNTIME_DIR=/run/user/1000DISPLAY=:0XDG_CURRENT_DESKTOP=UnityLANG=zh_CN.UTF-8XAUTHORITY=/home/jiangxin/.XauthorityXMODIFIERS=@im=fcitxXDG_GREETER_DATA_DIR=/var/lib/lightdm-data/jiangxinSHELL=/bin/bashGDMSESSION=ubuntuTEXTDOMAINDIR=/usr/share/locale/XDG_VTNR=7QT_IM_MODULE=ximPWD=/home/jiangxinXDG_CONFIG_DIRS=/etc/xdg/xdg-ubuntu:/usr/share/upstart/xdg:/etc/xdgXDG_DATA_DIRS=/usr/share/ubuntu:/usr/share/gnome:/usr/local/share/:/usr/share/CLUTTER_IM_MODULE=ximSELINUX_INIT=YESUBUNTU_MENUPROXY=1DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-BqwNaGt8wESSH_AUTH_SOCK=/run/user/1000/keyring-wrFl7V/sshSSH_AGENT_PID=2383SSH_AGENT_LAUNCHER=upstartGNOME_DESKTOP_SESSION_ID=this-is-deprecatedJOB=gnome-sessionINSTANCE=UnityUPSTART_EVENTS=started startingUPSTART_JOB=unity-settings-daemonUPSTART_INSTANCE=UPSTART_SESSION=unix:abstract=/com/ubuntu/upstart-session/1000/2299GPG_AGENT_INFO=/run/user/1000/keyring-wrFl7V/gpg:0:1

注意输出中的:PWD=/data1/1230。由此可以判断出程序server-a所在完成路径为:/data1/1230/server-a。来,验证一下吧:

bash-3.2# ls -l /data1/1230/server-a
-rwxr-xr-x 1 root root 5842 Feb 25 16:42 /data1/1230/server-a

/proc/进程号目录下的文件说明

  • cwd符号链接的就是进程的运行目录;
  • exe符号连接就是执行程序的绝对路径;
  • cmdline就是程序运行时输入的命令行命令;
  • cpu记录了进程可能运行在其上的cpu;显示虚拟的cpu信息
  • environ记录了进程运行时的环境变量
  • fd目录下是进程打开或使用的文件的符号连接

GTK中的delete_event和destroy

  • delete_event 事件一般由用户或者说用户通过窗口管理器产生,即点击窗口右上角的退出按钮。假如不做任何特殊处理,窗口管理器会自动产生destroy信号;如果我们自 定义了处理delete_event事件的回调函数,是否产生destroy信号就和函数的返回值有关,如果是FALSE就产生,反之则没有效果。
  • destroy,除了可以由delete_event事件产生之外,还可以通过gtk_widget_destroy函数与其它信号发生交换。同样,如果不加指定,默认结果是关闭所指向的窗口但并不结束进程。如果我们希望主窗口和进程一起关闭,必须使用gtk_main_quit()。

CodeBlocks自定义自动补全

1、依次打开 Project -> Properties -> C/C++ parser options 来到 Additional search paths; 2、点 Add 选择头文件的路径后点确定; 3、在源文件中添加相应的头文件后即可实现自动补全。

Linux 中C语言如何清空标准输入流

今天在Linux程序设计的时候需要清空标准输入缓冲区,于是使用了如下Windows程序设计中的方法:fflush(stdin),这个fflush()函数根本不是标准C中的函数,只是标准C的扩展,所以在Linux中使用根本不行;在网上搜索了下,发现有网友建议使用rewind(stdin);这个函数其实是将指针指向流的开始处。但是它是文件操作中的一个函数,操作的是FILE型流,在Windows程序设计中是可以清空标准输入缓冲区的,但是在Linux中不行。

注:上述内容有几处错误,详见《The Standart Library》

Linux上可以通过getchar()函数读完标准缓冲区中的剩余字符来清空标准缓冲区:

char ch;
while((ch=getchar())!='/n'&&ch!=EOF);

怎样给变量传递执行命令结果

在linux shell脚本里,设置一个变量,但是变量是一个命令,需要将执行结果放到变量里,并输出,例如:ip='ifconfig eth0' echo $ip,怎样可以叫页面显示的是eth0的网络状况?就是ifconfig eth0的结果?

ip=`ifconfig eth0`
echo $ip

使用反引号可以把一个命令的输出插到另一个命令中去。相同功能的写法还有$(),功能同 效果是一样的。不过某些unix系统不支持$()这种写法。但是 在任何unix或linux系统下都可以使用。

debian hosts文件中的 127.0.1.1 主机地址

有时候/etc/hosts文件会看到127.0.1.1这个地址,即本地接口的回路/回环地址。但有时候/etc/hosts文件中还会出现127.0.1.1,这也是个本地回路/回环地址。出现这个地址的原因是因为有些应用程序需要规范的全限定域名FQDN(Fully Qualified Domain Name),FQDN不只需要主机名还需要主机域名,其表达形式为hostname.domainname。如果你的主机有一个静态IP地址,则FQDN名字解析到这个静态地址,否则解析到127.0.1.1这个本地回路地址。所以一般情况下不会看到127.0.1.1这个地址。127.0.0.1一般只对应hostname,这也是二者的主要区别,如下

127.0.0.1 hostname
127.0.1.1 hostname.domainname

当然并一定非要用127.0.1.1这个IP,RFC规定的127.0.0.0/8这个IP段内的任意IP都可以,只要没有冲突,debian选择了127.0.1.1

hostname # 查看主机名
hostname --fqdn # 查看FQDN名字

解决ubuntu终端颜色消失问题

ubuntukylin-13.10登陆用户使用ls命令,终端显示的所有输出都是黑底白字,没有彩色,su - root后使用ls命令,输出为彩色。分别在登陆用户和root用户下执行echo $PS1 输出有差异。后发现登陆用户目录下没有.bashrc文件。复制默认.bashrc文件后解决:cp /etc/skel/.bashrc ~/

YUM相关问题解决

There are unfinished transactions remaining

使用yum安装东西报错:There are unfinished transactions remaining. You might consider running yum-complete-transaction first to finish them.。可能之前有强制结束yum过,解决办法如如下:

yum -y install yum-utils # 安装 yum-complete-transaction(这是一个能发现未完成或被中断的yum事务的程序)
yum clean all # 清除yum缓存
yum-complete-transaction --cleanup-only # 运行 yum-complete-transaction,清理未完成事务

注:yum会把下载的软件包和header存储在cache中,而不会自动删除.可用yum clean headers清除header,yum clean packages清除下载的rpm包,yum clean all全清.

another app is currently holding the yum lock;waiting for it to exit

yum提示如标题,可能是系统自动升级正在运行,yum在锁定状态中。可以强制关掉yum进程:rm -f /var/run/yum.pid

设置开机直接进入命令行

16.04之前的Ubuntu版本

需编辑文件/etc/default/grub,把 GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash”改成GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash text”,然后运行sudo update-grub。在控制台下想进入x-window,可以在root用户下输入:gdm或者startx

16.04及之后的Ubuntu版本

sudo systemctl disable lightdm.service
sudo ln -s /lib/systemd/system/lightdm.service /etc/systemd/system/display-manager.service #恢复默认图形界面启动

CentOS/Redhat

http://blog.csdn.net/zoubf/article/details/47607039

ssh相关

Agent admitted failure to sign using the key

ssh-keygen 产生出 id_rsa, id_rsa.pub, 已经都放到正确位置(.ssh), 但是联机时却出现下述讯息:Agent admitted failure to sign using the key。解决方法是在自己的机器上, 执行 ssh-add, 会出现:Identity added: /home/user/.ssh/id_rsa (/home/user/.ssh/id_rsa)

解决SSH超时断开连接问题

vim /etc/ssh/sshd_config

ClientAliveInterval # 指定服务器向客户端请求消息的时间间隔,默认是0表示不发送;可以改为60表示每分钟发送一次
ClientAliveCountMax # 表示服务器发出请求后客户端没有响应的次数达到一定值, 就自动断开

service sshd restart

sftp子系统申请已拒绝 请确保ssh连接的sftp子系统设置有效

[root@bogon ~]# vi /etc/ssh/sshd_config 

# override default of no subsystems
# Subsystem       sftp /usr/libexec/openssh/sftp-server
-->
# override default of no subsystems
Subsystem       sftp /usr/libexec/openssh/sftp-server

[root@bogon ~]# /etc/init.d/sshd reload