Linux命令大全

Linux 命令

安装和登陆

登陆命令login

登陆系统

设置命令的别名alias

内核命令lsmod,depmod,modprob

lsmod

功能:列出内核已载入模块的状态
用法:lsmod
描述:
lsmod 以美观的方式列出/proc/modules的内容。
输出为:
Module(模块名) Size(模块大小) Used by(被…使用)

depmod

功能:分析可加载模块的依赖性,生成modules.dep文件和映射文件。
用法:depmod [-b basedir] [-e] [-F System.map] [-n] [-v] [version] [-A]
depmod [-e] [-F System.map] [-n] [-v] [version] [filename…]
描述:
Linux内核模块可以为其它模块提供提供服务(在代码中使用EXPORT_SYMBOL),这种服务被称作”symbols”。若第二个模块使用了这个symbol,则该模块很明显依赖于第一个模块。这些依赖关系是非常繁杂的。

depmod读取在/lib/modules/version 目录下的所有模块,并检查每个模块导出的symbol和需要的symbol,然后创建一个依赖关系列表。默认地,该列表写入到/lib/moudules/version目录下的modules.dep文件中。若命令中的filename有指定的话,则仅检查这些指定的模块(不是很有用)。

若命令中提供了version参数,则会使用version所指定的目录生成依赖,而不是当前内核的版本(uname -r 返回的)。

选项:
-b basedir –basedir basedir 若你的模块并没有正确的在/lib/mdules/version下,可以指定目录生成依赖。
-e –errsyms 和-F选项一起使用,当一个模块需要的symbol在其它模块里面没有提供时,做出报告。正常情况下,模块没有提供的symbol都在内核中有提供。
-F –filesyms System.map 提供一个System.map文件(在内核编译时生成的)许-e选项报告出unresolved symbol。
-n –dry_run 将结果modules.dep和各种映射文件输出到标准输出(stdout),而不是写到模块目录下。
-A –quick 检查是否有模块比modues.dep中的模块新,若没有,则退出不重新生成文件。

modprobe

功能:Linux内核添加删除模块
用法:
modprobe [ -v ] [ -V ] [-C config-file] [ -n ] [ -i ] [ -q ] [ -o modulename] [ modulename ] [ module parameters … ]
modprobe [ -r ] [ -v ] [ -n ] [ -i ] [ modulename … ]
modprobe [ -l ] [ -t dirname ] [ wildcard ]
modprobe [ -c ]
描述:
modprobe可智能地添加和删除Linux内核模块(为简便起见,模块名中’_’和’-‘是一样的)。modprobe会查看模块目录/lib/modules/’uname -r’里面的所有模块和文件,除了可选的/etc/modprobe.conf配置文件和/etc/modprobe.d目录外。

modprobe需要一个最新的modules.dep文件,可以用depmod来生成。该文件列出了每一个模块需要的其他模块,modprobe使用这个去自动添加或删除模块的依赖。

选项:
-v –verbose 显示程序在干什么,通常在出问题的情况下,modprobe才显示信息。
-C –config 重载(^_^,意思取C++的重载)默认配置文件(/etc/modprobe.conf或/etc/modprobe.d)。
-c –showconfig 输出配置文件并退出
-n –dry-run 可以和-v选项一起使用,调试非常有用
-i –ignore-install –ignore-remove 该选项会使得modprobe忽略配置文件中的,在命令行上输入的install和remove命令。
-q –quiet 一般modprobe删除或插入一个模块时,若没有找到会提示错误。使用该选项,会忽略指定的模块,并不提示任何错误信息。
-r –remove 该选项会导致modprobe去删除,而不是插入一个模块。通常没有没有理由去删除内核模块,除非是一些有bug的模块。你的内核也不一定支持模块的卸载。
-V –verssion 版本信息
-f –force 和同时使用–force-vermagic ,–force-modversion一样。使用该选项是比较危险的。
-l –list 列出所有模块
-a –all 插入所有命令行中的模块
-t –type 强制 -l 显示dirname中的模块
-s –syslog 错误信息写入syslog

modinfo

功能:显示内核模块的信息
用法:
modinfo [ -0 ] [ -F field] [modulename | filename … ]
modinfo -V
modinfo -h
描述:
modinfo列出Linux内核中命令行指定的模块的信息。若模块名不是一个文件名,则会在/lib/modules/version 目录中搜索,就像modprobe一样。

modinfo默认情况下,为了便于阅读,以下面的格式列出模块的每个属性:fieldname : value。

选项:
-V –version 版本
-F –field 仅在一行上显示field值,这对于脚本较为有用。常用的field有:author, description, licence, param, depends, alias, filename。
-0 –NULL 使用’/0’字符分隔field值,而不是一个新行。对脚本比较有用。
-a -d -l -p -n 这些分别是author, description, license, param ,filename的简短形式。
功能:显示内核模块的信息
用法:
modinfo [ -0 ] [ -F field] [modulename | filename … ]
modinfo -V
modinfo -h
描述:
modinfo列出Linux内核中命令行指定的模块的信息。若模块名不是一个文件名,则会在/lib/modules/version 目录中搜索,就像modprobe一样。

modinfo默认情况下,为了便于阅读,以下面的格式列出模块的每个属性:fieldname : value。

选项:
-V –version 版本
-F –field 仅在一行上显示field值,这对于脚本较为有用。常用的field有:author, description, licence, param, depends, alias, filename。
-0 –NULL 使用’/0’字符分隔field值,而不是一个新行。对脚本比较有用。
-a -d -l -p -n 这些分别是author, description, license, param ,filename的简短形式。

insmod

功能:向Linux内核中插入一个模块
用法:insmod [filename] [modue options …]
描述:
insmod是一个向内核插入模块的小程序:若文件名是一个连字符’-‘,模块从标准输入输入。大多数用户使用modprobe,因为它比较智能化。
rmmod
功能:删除内核中的一模块
用法:rmmod [ -f ] [ -w ] [ -s ] [ -v ] [ modulename ]
描述:
rmmod是一个可以从内核中删除模块的小程序,大多数用户使用modprobe -r去删除模块。

选项:
-v –verbose 显示程序正在做些什么,一般只显示执行时的错误信息。
-f –force 该选项是非常危险:除非编译内核时,CONFIG_MODULE_FORCE_UNLOAD被设置该命令才有效果,否则没效果。用该选项可以删除正在被使用的模块,设计为不能删除的模块,或者标记为unsafe的模块。
-w –wait 通常,rmmod拒绝删除正在被使用的模块。使用该选项后,指定的模块会被孤立起来,直到不被使用。
-s –syslog 将错误信息写入syslog,而不是标准错误(stderr)。
-V –version 版本信息

文本编辑

sed命令

http://man.linuxde.net/sed

文件处理

创建链接ln

硬链接和软链接

$ ln f1 f2 创建一个f2的硬连接
$ ln -s f1 f3 创建一个f3的软连接

删除f1,f3失效,f3是f1的快捷方式;删除f1,f2可以使用。
参考:http://blog.chinaunix.net/uid-26983585-id-3245031.html

列出目录ls

$ ls -a
$ ls -l

查找find

$ find -name file

grep

cat

unzip

解压缩。如果有多卷,先合并再解压:

$ cat files.* >files_all.zip
& unzip files_all.zip

安全

文件权限chmod

  • 用于改变文件或目录的访问权限,用户可以用它控制文件或目录的访问权限,使用权限是超级用户。
  • chmod命令有两种用法。一种是包含字母和操作符表达式的字符设定法(相对权限设定);另一种是包含数字的数字设定法(绝对权限设定)。

(1)字符设定法
chmod [who] [+ | - | =] [mode] 文件名
◆操作对象who可以是下述字母中的任一个或它们的组合
u:表示用户,即文件或目录的所有者。
g:表示同组用户,即与文件属主有相同组ID的所有用户。
o:表示其它用户。
a:表示所有用户,它是系统默认值。
◆操作符号
+:添加某个权限。
-:取消某个权限。
=:赋予给定权限,并取消其它所有权限(如果有的话)。
◆设置mode的权限可用下述字母的任意组合
r:可读。
w:可写。
x:可执行。
X:只有目标文件对某些用户是可执行的或该目标文件是目录时才追加x属性。
s:文件执行时把进程的属主或组ID置为该文件的文件属主。方式“u+s”设置文件的用户ID位,“g+s”设置组ID位。
t:保存程序的文本到交换设备上。
u:与文件属主拥有一样的权限。
g:与和文件属主同组的用户拥有一样的权限。
o:与其它用户拥有一样的权限。
文件名:以空格分开的要改变权限的文件列表,支持通配符。
一个命令行中可以给出多个权限方式,其间用逗号隔开。
(2) 数字设定法
数字设定法的一般形式为: chmod [mode] 文件名
数字属性的格式应为3个0到7的八进制数,其顺序是(u)(g)(o)文件名,以空格分开的要改变权限的文件列表,支持通配符。

字表示的权限的含义如下:0001为所有者的执行权限;0002为所有者的写权限;0004为所有者的读权限;0010为组的执行权限;0020为组的写
权限;0040为组的读权限;0100为其他人的执行权限;0200为其他人的写权限;0400为其他人的读权限;1000为粘贴位置位;2000表示假
如这个文件是可执行文件,则为组ID为位置位,否则其中文件锁定位置位;4000表示假如这个文件是可执行文件,则为用户ID为位置位。

$ chmod +x test.sh
$ chmod 666 file
...

文件所有者chown

  • 更改一个或多个文件或目录的属主和属组。使用权限是超级用户。
  • chown [选项] 用户或组 文件

网络

$ nmcli dev show
$ nmcli dev

其他


Linux使用

Ubuntu配置VPN上网

Ubuntu中的网络管理机制

Ubuntu中有两种网络管理方案:文本配置工具以及图像化的管理工具NetworkManager.这两套网络管理工具是独立的,为了方便我只使用图形化的管理工具.这样,需要把/etc/network/interfaces文件中的其他内容删除,只保留两行:

auto lo
iface lo inet loopback

这样,NetworkManager才会接管网络.
但是,输入nmcli dev命令,发现以太网不可用,查看IP地址后发现没有分配IP地址,所以终端输入sudo dhclient enp2s0,获取IP地址.之后就可以在Ubuntu右上角的的网络管理中看到enp2s0了.配置IP地址,子网掩码,网关,DNS服务器地址,就可以上内网了.

配置VPN

到内网http://www.cc98.org/dispbbs.asp?BoardID=212&id=2323871&page=&replyID=2323871&star=1下载xl2tpd包:xl2tpd_1.2.5+zju-1_i386.deb或者xl2tpd_1.2.5+zju-1_amd64.deb,安装:

$ sudo dpkg -i xl2tpd_1.2.5+zju-1_amd64.deb

如果缺少依赖项,自行安装.
安装完毕有提示,按照提示操作就可以了.

修改环境变量

修改/etc/profile文件

下载工具

Ubuntu运行库

Ubuntu的运行库管理工具ldconfig

ldconfig的介绍:http://linux.101hacks.com/unix/ldconfig/
在 Linux 下面,共享库的寻找和加载是由 /lib/ld.so 实现的。 ld.so 在标准路经(/lib, /usr/lib) 中寻找应用程序用到的共享库。如果共享库不在标准路径下,则需要指定共享库的搜索路径.ldconfig是一个管理linux下共享库符号链接的工具,共享库的查找路径定义在/etc/ld.so.conf中.ldconfig的作用就是将/etc/ld.so.conf列出的路径下的库文件缓存到/etc/ld.so.cache中,ld.so 加载共享库的时候,会从 ld.so.cache查找.因此当安装完一些库文件,(例如刚安装好glib),或者修改ld.so.conf增加新的库路径后,需要运行一下/sbin/ldconfig.使所有的库文件都被缓存到ld.so.cache中,如果没做,即使库文件明明就在/usr/lib下的,也是不会被使用的,结果编译过程中报错,缺少xxx库.

共享库搜索路径LD_LIBRARY_PATH

Linux 的先辈 Unix 还有一个环境变量 - LD_LIBRARY_PATH 来处理非标准路经的共享库。ld.so 加载共享库的时候,也会查找这个变量所设置的路经。但是,有不少声音主张要避免使用 LD_LIBRARY_PATH 变量,尤其是作为全局变量.解决这一问题的另一方法是在编译的时候通过 -R 选项指定 run-time path.
如果需要用到的共享库在非标准路径

方法一:将非标准路经加入 /etc/ld.so.conf,然后运行 ldconfig 生成 /etc/ld.so.cache。 ld.so 加载共享库的时候,会从 ld.so.cache 查找。
方法二:将共享库路径添加到LD_LIBRARY_PATH环境变量

其他

ldd命令查看程序的依赖库

Ubuntu编译时包含路径和库目录

pkg-config简介

编译程序的时候需要指定库目录和包含目录,为了减少库版本的更换造成编译命令的变化,人们使用了库信息提取工具pkg-config:事先把库的位置信息等保存起来,需要的时候再将其中有用的信息提取出来供编译和链接使用.
pkg-config 是通过库提供的一个.pc 文件获得库的各种必要信息的,包括版本信息、编译和连接需要的参数等。这些信息可以通过 pkg-config 提供的参数单独提取出来直接供编译器和连接器使用.
在默认情况下,每个支持pkg-config 的库对应的 .pc 文件在安装后都位于安装目录中的 lib/pkgconfig 目录下。安装完库之后,我们需要告诉系统该库对应的pkgconfig的目录.默认的PKG_CONFIG_PATH是/usr/lib/pkgconfig,我们可以将我们安装的库的pkgconfig目录添加到环境变量PKG_CONFIG_PATH.
这样,我们在编译程序的时候会方便很多,假设一个 sample.c 的程序用到了 Glib 库,就可以这样编译:

gcc -c `pkg-config --cflags glib-2.0` sample.c

有些库不支持pkgconfig,比如boost库.


update-alternatives切换软件版本

update-alternatives是ubuntu系统中专门维护系统命令链接符的工具,通过它可以很方便的设置系统默认使用哪个命令、哪个软件版本.
介绍下 update-alternatives 命令中的几个主要选项,diplay、install、remove、config:

  • display:查看一个命令链接组的所有信息,包括链接的模式(自动还是手动)、链接priority值、所有可 用的链接命令等等。使用语法:update-alternatives –display name ,其中name为命令链接名称
  • install: 增加一组新的系统命令链接符了.使用语法为:update-alternatives –install link name path priority [–slave link name path]… 其中link为系统中功能相同软件的公共链接目录,比如/usr/bin/java(需绝对目录); name为命令链接符名称,如java; path为你所要使用新命令、新软件的所在目录; priority为优先级,当命令链接已存在时,需高于当前值,因为当alternative为自动模式时,系统默认启用priority高的链接; –slave为从alternative。
  • remove:删除一个alternative及相关从alternative,使用语法为:update-alternatives –remove name path,其中name与path与install中的一致,如果所删除的链接组中还有其他链接的话,系统将会自动从其他中选择一个priority高的链接作为默认为链接。
  • config:在现有的命令链接选择一个作为系统默认的

Ubuntu增加交换空间

1.首先用命令free查看系统内 Swap 分区大小

$ free -m

2.创建一个 Swap 文件

$ sudo dd if=/dev/zero of=/mnt/swap bs=1024 count=16384

3.格式化Swap 文件

$ sudo mkswap /mnt/swap

4.激活交换空间

$ sudo swapon swapfile

5.修改权限

$ sudo chown root:root /mnt/swap
$ sudo chmod 0600 /mnt/swap
$ ls -l /mnt/swap

显示:

$ -rw------- 1 root root 17179869184  7月 13 13:27 /mnt/swap
$ free -m
             total       used       free     shared    buffers     cached
Mem:          7890       7814         76        399         37       5154
-/+ buffers/cache:       2622       5268
Swap:        16383          0      16383

如果要卸载交换空间:

$ sudo swapoff swapfile

如果想开机自动挂载就需要修改fstab,输入

$ sudo gedit /etc/fstab

在文件的最后面加上

swap(此处swapswap文件的绝对地址)       none            swap    sw              0       0

Ubuntu远程登陆

Ubuntu远程登陆客户端

安装远程登陆客户端:

$ sudo apt-get install rdesktop

查看使用说明

$ rdesktop -h

登陆

$ rdesktop -f -a 24 xx.xx.xx.xx

选择全屏,24位彩色。
退出全屏:

Ctrl+Alt+Enter

Ubuntu远程登陆服务器端

1.安装mate桌面
2.安装xrdp

Linux Shell编程

注意创建完源文件后要赋予可执行权限。
读取文件fileA每一行

while read line
do
...
done < $fileA

分割字符串str

output=${str#*.}   #删除从左边以'.'结尾的最短的字符串
output=${str##*.}  #删除从左边以'.'结尾的最长的字符串

output=${str%.*}   #删除从右边起以'.'结尾的最短字符串
output=${str%%.*}  #删除从右边起以'.'结尾的最长的字符串

数学计算

Ubuntu问题解决

WPS无法输入中文

原因:环境变量未正确设置
$ vi /usr/bin/wps,添加以下内容:

#!/bin/bash
export XMODIFIERS="@im=fcitx"
export QT_IM_MODULE="fcitx"
gOpt=
#gOptExt=-multiply
gTemplateExt=("wpt" "dot" "dotx")
.......

设置进程优先级

renice -19 -p xxx

优先级从-19到19,越大优先级越低。指定pid。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值