## Get Ubuntu Version Info

lsb_release -a

## Get Linux kernal info

uname -a

## Get Computer name

echo $HOSTNAME

## Define Environment Variable

###  Defining Variables Globally

Most Linux distributions tell you to change or add environment variable definitions in /etc/profile or other locations. Be sure to maintain and manage the environment variables and pay attention to the numerous files that can contain environment variables. In principle, any shell script can be used for initializing environmental variables, but following traditional UNIX conventions, these statements should be only be present in some particular files. The following files should be used for defining global environment variables on your system: /etc/profile, /etc/bash.bashrc and /etc/environment.

### Defining Variables Locally

You do not always want to define an environment variable globally. For instance, you might want to add /home/my_user/bin to the PATH variable but do not want all other users on your system to have that in their PATH too. The following files should be used for local environment variables on your system: ~/.bashrc, ~/.profile, ~/.bash_login and ~/.bash_logout.

To add a directory to PATH for local usage, put following in ~/.bashrc:

PATH="${PATH}:/home/my_user/bin"

To update the variable, re-login or source the file: $ source ~/.bashrc.

### Session Specific Variables

Sometimes even stricter definitions are required. One might want to temporarily run executables from a specific directory created without having to type the absolute path to each one, or editing ~/.bashrc for the short time needed to run them.

In this case, you can define the PATH variable in your current session, combined with the export command. As long as you do not log out, the PATH variable will be using the temporary settings. To add a session-specific directory to PATH, issue:

$ export PATH="${PATH}:/home/my_user/tmp/usr/bin"

## Print all environment variables

printenv

## 关机命令 shutdown

好像ubuntu的终端中默认的是当前用户的命令,只是普通用户,因此在终端器中可以使用sudo -sh 转换到管理员root用户下执行命令。

1)shutdown --help

可以查看shutdown命令如何使用,当然也可以使用man shutdown命令。

2) shutdown -h now 现在立即关机

3)shutdown -r now 现在立即重启

4)shutdown -r +3 三分钟后重启

5)shutdown -h +3 "The System will shutdown after 3 minutes" 提示使用者将在三分钟后关机

6)shutdown -r 20:23 在20:23时将重启计算机

7)shutdown -r 20:23 & 可以将在

## How to start GUI application

Add a "&" to the end of commandline

$ emacs &

$ p4v &

You can also "ctrl + z" to suspend current running process.

## 搜索文件

1.whereis 文件名
  快速模糊查找.
 2.find / -name 文件名
  准确,但速度慢,消耗资源大
  #find / -name php.ini
 3.locate 文件名
  强力推荐,最快,最好. To use locate in Mac, run "sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.locate.plist"

Install locate:
    ubuntu:sudo apt-get install locate;
    centos:yum -y install mlocate;

第一次使用locate的时候,会有一个"mlocate.db:No such file or directoly"的错误,需要update db。

[root@ip-10-199-99-196 src]# locate .emacs
locate: can not stat () `/var/lib/mlocate/mlocate.db': No such file or directory
[root@ip-10-199-99-196 src]# updatedb
[root@ip-10-199-99-196 src]# locate .emacs
/etc/rpm/macros.emacs
/etc/skel/.emacs
/root/.emacs.d
/root/.emacs.d/auto-save-list
/root/.emacs.d/auto-save-list/.saves-11160-ip-10-199-99-196.ec2.internal~
/root/.emacs.d/auto-save-list/.saves-5002-ip-10-199-99-196.ec2.internal~
/root/.emacs.d/auto-save-list/.saves-5181-ip-10-199-99-196.ec2.internal~
/root/.emacs.d/auto-save-list/.saves-5215-ip-10-199-99-196.ec2.internal~
/usr/bin/etags.emacs
/usr/share/man/man1/etags.emacs.1.gz

## 查看磁盘剩余空间和文件夹大小

df -hl 查看磁盘剩余空间
df -h 查看每个根路径的分区大小
du -sh [目录名] 返回该目录的大小
du -sm [文件夹] 返回该文件夹总M数

Example:

[root@ip-12-345-678-910 users]# df -lh
Filesystem Size Used Avail Use% Mounted on
/dev/xvda1 7.9G 3.0G 4.9G 39% /
tmpfs 831M 0 831M 0% /dev/shm

Help:

df --help
du --help

## 用ps查看进程

ps命令可以用来查看当前的进程。

ps a 显示现行终端机下的所有程序,包括其他用户的程序。
ps -A 显示所有程序。
ps c 列出程序时,显示每个程序真正的指令名称,而不包含路径,参数或常驻服务的标示。
ps -e 此参数的效果和指定"A"参数相同。
ps e 列出程序时,显示每个程序所使用的环境变量。
ps f 用ASCII字符显示树状结构,表达程序间的相互关系。
ps -H 显示树状结构,表示程序间的相互关系。
ps -N 显示所有的程序,除了执行ps指令终端机下的程序之外。
ps s 采用程序信号的格式显示程序状况。
ps S 列出程序时,包括已中断的子程序资料。
ps -t<终端机编号> 指定终端机编号,并列出属于该终端机的程序的状况。
ps u 以用户为主的格式来显示程序状况。
ps x 显示所有程序,不以终端机来区分。

常有人用ps aux | grep program_filter_word来利用grep过滤process。

## 用top来查看进程

top命令用来动态显示系统当前的进程状况,与ps的主要区别也正在于这动态二字.

Options:

-b:使用批处理模式。

-c:显示程序并显示程序的完整相关信息,如名称、路径等。

-i:忽略闲置或已经冻结的程序。

-d<delay>:以秒为单位,设定监控程序执行状况的时间间隔。

-n<iterations>:设定监控信息的更新次数。

-p<进程号>:指定进程。

-s:安全模式。

-u<somebody>:指定用户名。

-v:显示版本信息。

-h:显示帮助信息。

## 用pstree来显示进程树

pstree命令列出当前的进程,以及它们的树状结构。

## kill来杀死进程

kill [ -s signal | -p ] [ -a ] pid ...
kill -l [ signal ]

参数

-s:指定发送的信号。
-p:模拟发送信号。
-l:指定信号的名称列表。
pid:要中止进程的ID号。
Signal:表示信号。

信号量9杀死Zombie Process并清理内存

kill -9  pid

free

## 查看可执行程序和动态链接库所以来的动态链接库

在Windows下,我们可以使用Dependency Walker来查看依赖,在Linux下,我们可以简单使用ldd来达到同样的目的.

[root@ip-12-345-678-910 users]# ldd ./test
linux-vdso.so.1 => (0x00007fff491ff000)
libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00007f9b10b84000)
libm.so.6 => /lib64/libm.so.6 (0x00007f9b10900000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f9b106eb000)
libc.so.6 => /lib64/libc.so.6 (0x00007f9b1035c000)
/lib64/ld-linux-x86-64.so.2 (0x00007f9b10e8b000)

但是,我们要注意可能存在安全问题:

ldd工具可能比你想象的更容易被攻击。程序员和系统管理员经常使用ldd工具在Linux和UNIX操作系统内列出可执行文件所依赖的共享库。但是一位黑客用事例证明,在一个可执行文件中运行ldd,可能会导致其执行任意代码。一位用户指出,这个问题很早被发现了,“Program Library HOWTO”就警告:不要在自己不信任的程序内运行ldd,ldd是通过设置特殊的环境变量工作和运行程序的,一个可疑的程序可能会迫使ldd用户执行任意的代码,而不是列出共享库。

当然,除了ldd,我们也可以使用elflibviewer或binscan:

binscan: http://sourceforge.net/projects/binscan/

elflibviewer:http://www.purinchu.net/software/elflibviewer.php

## 显示动态链接库的导出的符号

这个功能在Windows下的Dependency walker也有,在Linux下,它是nm。

[root@ip-12-345-678-910 users]# nm ./test
0000000000600ad8 d _DYNAMIC
0000000000600cc0 d _GLOBAL_OFFSET_TABLE_
0000000000400863 t _GLOBAL__sub_I_main
...

0000000000400968 R _IO_stdin_used

00000000004007c0 t frame_dummy
00000000004007e4 T main

## 压缩与解压

———————————————
.tar/.tar.gz/tar.bz
必须的参数:(3个参数不能共存)
-c :创建压缩文件c代表create。
-x :解压缩文件
-t :查看压缩包里面的文件!

辅助参数:
-z :用 gzip 压缩/解压缩
-j :用 bzip2 压缩/解压缩
-v :显示压缩/解压缩的进度条
-f :使用档名(注意:f后面不要接参数,也就是说-zxfv是不对的,要写成-zxvf)

实例:
解压一个文件:tar -zxvf abc.tar.bz2
(解压缩abc.tar.bz2)
创建压缩文件:tar -zcvf abc.tar.bz2 one.mp3 two.mp3
(把one.mp3和two.mp3压缩成abc.tar.bz2)
———————————————

———————————————

.7z

安装:Redhat、Fedora、Centos安装命令:yum install p7zip
安装:Debian、Ubuntu安装命令:apt-get install p7zip
解压实例:
7z x filename.7z
———————————————

———————————————
.zip

zip参数列表:
-a  将文件转成ASCII模式
-F  尝试修复损坏的压缩文件
-h  显示帮助界面
-m  将文件压缩之后,删除源文件
-n  特定字符串 不压缩具有特定字尾字符串的文件
-o  将压缩文件内的所有文件的最新变动时间设为压缩时候的时间
-q  安静模式,在压缩的时候不显示指令的执行过程
-r  将指定的目录下的所有子目录以及文件一起处理
-S  包含系统文件和隐含文件(S是大写)
-t  日期 把压缩文件的最后修改日期设为指定的日期,日期格式为mmddyyyy

unzip参数列表:
-l  列出压缩文件所包含的内容
-v 显示详细的执行过程

解压:unzip FileName.zip
压缩:zip -r FileName.zip DirName
———————————————

## Find all file descripters

列出打开FileDescripter数目: ls -l | wc -l

http://www.cyberciti.biz/tips/linux-procfs-file-descriptors.html

The.first.glance.at.linux.commands的更多相关文章

  1. 10 Linux Commands Every Developer Should Know

    转载:http://azer.bike/journal/10-linux-commands-every-developer-should-know/ As a software engineer, l ...

  2. The common Linux Commands

    Linux的命令总结 1. man:在线请求系统帮助 例:man mkdir NAME:这个命令的完整全名 mk(make directories) SYNOPSIS:这个命令的基本语法 mkdir ...

  3. linux commands

    abrt-cli --since ;查看abrt捕捉的异常 alias ;别名,alias rm='rm -i':使用“ \rm ” 使用原命令 alsamixer ;图形音量调节,q 增加左声道, ...

  4. [reprint]useful linux commands

    linux一说都是搞开发玩的,敲敲键盘就能完成所有的工作.其实你也可以这么玩,玩游戏的除外哦. 那我们就来侃侃如何玩,linux是命令的天下,高级的命令那是相当的多,但是我们正真用到的也就那么几个看你 ...

  5. Learning Linux Commands: awk--reference

    http://how-to.linuxcareer.com/learning-linux-commands-awk 1. Introduction In this case, the title mi ...

  6. Common Linux Commands 日常工作常用Linux命令

      How to know CPU info      cat /proc/cpuinfo      arch   How to know memory info: cat /proc/meminfo ...

  7. linux commands - 一次性解压多个tar.gz文件

    tar -zxvf list所有tar.gz文件,然后利用xargs将其作为参数传给tar命令.-n 1表示每次传一个参数. xargs: https://www.cnblogs.com/wangqi ...

  8. some useful linux commands

    # best way to see log file less +F /var/log/syslog (equals: less /var/log/syslog, then shift+f) # se ...

  9. Linux commands frequently used

    touch <filename>.sh gedit <filename>.sh bash <filename>.sh & ps auxw|grep < ...

随机推荐

  1. 标准C++ I/O库 迭代器让数据自由流动 V8

    IO库的组成 三种流 C++的IO库以流对象为实体.主要有三种流: (1)标准输入输出流 (2)文件输入输出流 (3)字符串输入输出流 流迭代器 输入输出流迭代器 instream_iterator& ...

  2. list/tuple/dict/set

    一.list(列表) 内置类型,长度可变的有序集合,索引从0开始,索引为负数是标识从右开始取,最右边第一个是-1,以此类推.里面的元素可以是不同类型的. 1.定义:a = [] #空列表 2.获取长度 ...

  3. 基于SpringBoot的Environment源码理解实现分散配置

    前提 org.springframework.core.env.Environment是当前应用运行环境的公开接口,主要包括应用程序运行环境的两个关键方面:配置文件(profiles)和属性.Envi ...

  4. Odoo环境下Ubuntu服务器性能优化--参数调整

    公司在使用Odoo进行内部信息化管理,随着业务增长,服务器性能问题变成了瓶颈,为了解决这些问题,最近的工作重点将移到性能调整上来,同时也会在此记录整个处理过程,以便日后回顾. 1.根据相关资料建议,在 ...

  5. Visual studio之C#实现数字输入模拟键盘

    背景 当前做的一个上位机需运行在工控机上,众所周知,工控机不可能配备键盘,只能是触屏,而我当前的上位机需要输入参数,于是之前的解决办法既是调用Windows自带的OSK.exe虚拟键盘,方法在我的另一 ...

  6. Manual close is not allowed over a Spring managed SqlSession(转)

    最近用junit测试spring项目的时候,报错: Manual close is not allowed over a Spring managed SqlSession 意思是不允许手动关闭spr ...

  7. 抛弃【 LIMIT O,N 】,换种方法查询分页

    在分页功能开发时,我们很习惯用LIMIT O,N的方法来取数据.这种方法在遇到超大分页偏移量时是会把MySQL搞死的ooo... 通常,我们会采用ORDER BY LIMIT start, offse ...

  8. LaTex的注释

    在LaTex中的注释有以下3种 1.注释一行:使用%注释一行文字, 在%后的文字都不予编译: 2.注释一段:使用\iffalse .... \fi 包含一段文字,被包含的文字被注释掉了: 3.注释一段 ...

  9. Could not create and/or set value back on to object .

    严重: Error building beanorg.springframework.beans.factory.UnsatisfiedDependencyException: Error creat ...

  10. xcode9.2 objective-c install (mac 10.12.6)

    1. xcode下载: https://download.developer.apple.com/Developer_Tools/Xcode_9.2/Xcode_9.2.xip 2. 点击默认安装即可 ...