linux命令操作

文件预设权限:

umask / umask -S

umask的分数是默认值需要减掉的权限

文件隐藏属性:

chattr 配置文件隐藏属性

chattr [+-=][ASacdistu] 文件或目录名称

+ :增加某一个特殊参数,其他原本存在参数则不动。

- :移除某一个特殊参数,其他原本存在参数则不动。

= :设定一定,且仅有后面接的参数

a :当设定 a 之后,这个文件将只能增加数据,而不能删除也不能修改数据,只有 root 才能设定这属性;

i :他可以让一个文件不能被删除、改名、设定连结也无法写入或新增数据。对于系统安全性有相当大的帮助,只有 root 能设定此属性。

lsaddr 显示文件隐藏属性

lsattr [-adR] 文件或目录

-a :将隐藏文件的属性也秀出来;

-d :如果接的是目录,仅列出目录本身的属性而非目录内的文件名;

-R :连同子目录的数据也一并列出来!

文件特殊权限:SUIDSGIDSBIT(只对目录有效)

SGID对于文件来说:

对于二进制文件需要具有文件的执行权限,执行时该文件会获得程序群组的支持

SGID对于目录而言:

文件目录需要有执行和写入的权限,用户可以进入该目录,用户在此目录下的有效群组将会变成该目录的群组; 若用户在此目录下具有 w 的权限(可以新建文件),则使用者所建立的新文件,该新文件的群组与此目录的群组相同。

SBIT:当用户对于此目录具有 w, x 权限,亦即具有写入的权限时,当用户在该目录下建立文件或目录时,仅有自己与 root 才有权力删除该文件

SUID/SGID/SBIT 权限设定

4 SUID ,2 SGID ,1 SBIT

chmod 4755 filename

观察文件类型:file想要知道某个文件的基本数据

脚本文件名的搜寻:

which [-a] command

-a :将所有由 PATH 目录中可以找到的指令均列出,而不止第一个被找到的指令名称

文件档名的搜寻:

whereis [-bmsu] 文件或目录名

-l :可以列出 whereis 会去查询的几个主要目录而已

-b :只找 binary 格式的文件

-m :只找在说明文件 manual 路径下的文件

-s :只找 source 来源文件

-u :搜寻不在上述三个项目当中的其他特殊文件

locate:根据数据库去搜寻文件,但可能数据库未更新,可能会无法找到,根据updatadb更新数据库。

locate [-ir] keyword

-i :忽略大小写的差异;

-c :不输出档名,仅计算找到的文件数量

-l :仅输出几行的意思,例如输出五行则是 -l 5

-S :输出 locate 所使用的数据库文件的相关信息,包括该数据库纪录的文件/目录数量等

-r :后面可接正规表示法的显示方式

findfind -name/-size [+-]SIZE/-type TYPE(一般正规文件 (f), 装置文件 (b, c), 目录 (d), 连结档 (l), socket (s), FIFO (p) 等属性)/-perm mode(文件权限刚好等于mode)/-perm /mode

(包含任一权限)

在后面还可以带-exec +命令最后以结尾

eg.:find /usr/bin /usr/sbin -perm /7000 -exec ls -l {} ; 在这两个目录下找到只要含有st就可以的文件然后ls -l显示出来,{;}代表的是结束,是跳脱字符用于;

linux常见的压缩命令:

gzip [-cdtv#] filename

 -c :将压缩的数据输出到屏幕上,可透过数据流重导向来处理;

-d :解压缩的参数;

-t :可以用来检验一个压缩文件的一致性~看看文件有无错误;

-v :可以显示出原文件/压缩文件案的压缩比等信息;

-# # 为数字的意思,代表压缩等级,-1 最快,但是压缩比最差、-9 最慢,但是压缩比最好预设是 -6

zcat/zmore/zless 则可以对应于cat/more/less 的方式来读取纯文本档被压缩后的压缩文件

bzip2 [-cdkzv#] filename

-c :将压缩的过程产生的数据输出到屏幕上

-d :解压缩的参数

-k :保留源文件,而不会删除原始的文件

-z :压缩的参数 (默认值,可以不加)

-v :可以显示出原文件/压缩文件案的压缩比等信息;

-# :与 gzip 同样的,都是在计算压缩比的参数, -9 最佳, -1 最快

xz [-dtlkc#] filename

-d :就是解压缩

-t :测试压缩文件的完整性,看有没有错误-l :列出压缩文件的相关信息

-k :保留原本的文件不删除~

-c :将数据由屏幕上输出

-# :较佳的压缩比的

tar打包命令:

虽然压缩命令也可以将压缩目录,但只是将目录下的文件分别进行压缩,tar可以将多个目录和文件打包成一个大文件,将这些文件进行压缩,同时透过压缩命令的支持,将文件进行压缩。

缩:tar -jcv -f filename.tar.bz2 要被压缩的文件或目录名称

询:tar -jtv -f filename.tar.bz2

解压缩:tar -jxv -f filename.tar.bz2 -C 欲解压缩的目录

-z :透过 gzip 的支持进行压缩/解压缩:此时档名最好为 *.tar.gz

-j :透过 bzip2 的支持进行压缩/解压缩:此时档名最好为 *.tar.bz2

-J :透过 xz 的支持进行压缩/解压缩:此时档名最好为 *.tar.xz

-z-j-J不可以同时出现在同一tar命令中

-p(小写) :保留备份数据的原本权限与属性,常用于备份(-c)重要的配置文件

-P(大写) :保留绝对路径,亦即允许备份数据中含有根目录存在之意;

--exclude=FILE:在压缩的过程中,不将 FILE 打包

备份dddd if="input_file" of="output_file" bs="block_size" count="number"

if :就是 input file也可以是装置;

of :就是 output file也可以是装置;

bs :规划的一个 block 的大小,若未指定则预设是 512 bytes(一个 sector 的大小)

count:多少个 bs 的意思。

备份文件:cpio

cpio命令没有指定需要备份的文件,只是指定了备份的地址,这就需要管道,将数据显示出来由cpio通过数据流重导向去备份。而且cpio备份时没法识别绝对路径和相对路径,所以需要切换到文件的当前路径然后使用命令将数据由管道再由cpio数据流重导向到备份的路径。

cpio -ovcB > [file|device] <==备份

cpio -ivcdu < [file|device] <==还原

cpio -ivct < [file|device] <==察看

makefile的基本语法及变量

目标(target): 目标文件 1 目标文件 2

gcc -o 欲建立的执行文件 目标文件 1 目标文件 2

变量的基本语法:

1. 变量与变量内容以『=』隔开,同时两边可以具有空格;

2. 变量左边不可以有 ,例如上面范例的第一行 LIBS 左边不可以是 ;

3. 变量与变量内容在『=』两边不能具有『:』;

4. 在习惯上,变数最好是以『大写字母』为主;

5. 运用变量时,以 ${变量} $(变量) 使用;

6. 在该 shell 的环境变量是可以被套用的

7. 在指令列模式也可以给予变量。

gcc编译的过程中,所指定的变量可以定义在makefile中,可以是同一shell中的环境变量,也可以是指令列中定义的变量,他们的优先级是:

  1. make 指令列后面加上的环境变量为优先;

2. makefile 里面指定的环境变量第二;

3. shell 原本具有的环境变量第三。

$@:代表目前的目标(target)

tarball

软件安装的指令:

./configure:使用一支script检查linux环境,相关的软件属性

makeclean:去除目标文件

makefile:根据makefile文件进行文件编译

makeinstall:根据makefileinstall把数据安装到指点目录

函式库管理:

静态库:后缀名为.o,在文件编辑过程中直接将库整合到代码中,占用的空间会比较大,当使用的库升级后,整个执行档必须要全部重新编译才能将新的库应用到程序中。优点是编译好的文件可以独立执行。

动态库:linux的大多数函式库是动态的,后缀名为.so,在文件中,他只有一个指向的位置,当执行时,会读取库去执行,并不包括库的内容,所以占用的空间会小一些,这种类型的库编译出来的程序不可以独立执行,但是当有编译时所需要的库升级时,不需要重新编译。

程序的动态库解析:ldd [-vdr] [filename]

将动态库加载到内存中:增加动态库的读取速度的操作

  1. 首先必须要在 /etc/ld.so.conf里面写下想要读入高速缓存当中的动态函式库所在的目录

2. 接下来则是利用 ldconfig 这个执行档将 /etc/ld.so.conf 的资料读入快取当中;

3. 同时也将数据记录一份在 /etc/ld.so.cache 这个文件当中

服务器硬件数据的收集:

以系统内建 dmidecode 解析硬件配备

dmidecode -t type

type参数:

1 :详细的系统数据,含主板的型号与硬件的基础数据等

4 CPU 的相关资料,包括倍频、外频、核心数、核心绪数等

9 :系统的相关插槽格式,包括 PCI, PCI-E 等等的插槽规格说明

17:每一个内存插槽的规格,若内有内存,则列出该内存的容量与型号

硬件资源的收集与分析:

linux主机的硬件设备:

lspci [-vvn]

-v :显示更多的 PCI 接口装置的详细信息;

-vv :比 -v 还要更详细的细部信息;

-n :直接观察 PCI ID 而不是厂商名称

了解系统接了多少个usb设备: 

lsusblsusb [-t]

-t :使用类似树状目录来显示各个 USB 端口口的相关性

检查由开机到现在,磁盘已经存储了多少数据量:

iostat [-c|-d] [-k|-m] [-t] [间隔秒数] [侦测次数]

原文地址:https://www.cnblogs.com/pw-fan/p/11244364.html