linux基础(4)

1、ps:将某个时间点的程序运作情况撷取下来

2、kill杀死进程

# kill -pid

注释:标准的kill命令通常都能达到目的。终止有问题的进程,并把进程的资源释放给系统。然而,如果进程启动了子进程,只杀死父进程,子进程仍在运行,因此仍消耗资源。为了防止这些所谓的“僵尸进程”,应确保在杀死父进程之前,先杀死其所有的子进程。
有时候只想简单的停止和重启进程。如下:

以优雅的方式结束进程

# kill -l PID

-l选项告诉kill命令用好像 启动进程的用户已注销 的方式结束进程。当使用该选项时,kill命令也试图杀死所留下的子进程。但这个命令也不是总能成功--或许仍然需要先手工杀死子进程,然后再杀死父进程。

# kill -HUP PID

该命令让Linux和缓的执行进程关闭,然后立即重启。在配置应用程序的时候,这个命令很方便,在对配置文件修改后需要重启进程时就可以执行此命令。

3、重定向

输入重定向
more < killout.txt
输出重定向
ls -l > lsout.txt //如果lsout.txt已经存在,则覆盖其内容
ls -l >> lsout.txt //如果lsout.txt已经存在,则最佳到lsout.txt的末尾

0代表标注输入
1代表标准输出
2代表标准错误输出

kill -HUP 1234 >killout.txt 2>killer.txt
将标准输出和标准错误输出分别的重定向到不同的文件中

kill -l 1234 killout.txt 2>&1
将标准输出重定向到killout.txt,然后将标准错误输出重定向到与标准输出相同的地方

4、管道:
(1)不使用管道
ps > psout.txt
sort psout.txt > pssort.out
(2)使用管道
ps | sort > pssort.out

5、把脚本文件设置为可执行
first //其实,后缀sh不是必须的,知识为了增加可读性
#!/bin/sh //用/bin/sh来执行本脚本文件
echo 'hello'

增加可执行权限
chmod +x first

这时,我们你运行first命令会发生错误,因为PATH环境变量并没有将当前目录设置进去,可以采取以下措施
(1) PATH=$PATH:.
(2)编辑.bash_profile
(3)输入./first
(4)/bin/sh first

6、export命令
export命令将 作为它参数的变量到处到子shell中,并使之在子shell中有效。在默认情况下,一个shell中被创建的变量在这个shell调用的下级shell中是不可用的。export命令把自己的参数创建为一个环境变量,而这个环境变量可以被当前程序调用的其他脚本和程序看见。

脚本文件export2
#!/bin/sh

echo "$foo"
echo "$bar"

脚本文件export1
#!/bin/sh

foo="foo"
export bar="bar"
export2

shell下运行 ./export1
输出
[空行]
bar

一旦一个变量被导出,它就可以被该shell调用的任何脚本使用,也可以被后续依次调用的任何shell使用
set -a 或者 set -allexport 将导出它之后声明的所有变量

7、.点命令
当一个脚本执行一条外部命令或者脚本时,它会创建一个新的环境(一个子shell),命令将在这个新环境中执行,在命令执行完毕后,这个环境将被丢弃,留下退出码返回给父shell。而点命令允许将要执行的脚本在当前shell中执行。

脚本文件classic_set
#!/bin/sh
version="classic"
PATH=/usr/local/bin:/usr/bin:/bin:.
ps1="classic> "

运行该脚本
$ . ./classic_set
classic> echo $version
classic
classic>

8、linux文件与目录
文件,除了本身包含的内容以外,它还会有一个名字和属性,包括文件的创建修改日期和他的访问权限,这些属性保存在文件的inode节点中,inode节点不保存文件名,它是文件系统的一个特殊的数据块,它同时还包含文件的长度的文件在磁盘上的存放位置。系统使用的是文件的inode编号,目录结构为文件命名仅仅是为了便于人们使用。
目录是用于保存其他文件的节点号和名字的文件。删除一个文件时,实质上是删除了该文件对应的目录项,同时指向该文件的链接数减一。如果指向某个文件的连接数为0,则表示该inode节点以及指向的数据不再被使用,磁盘上的相应位置会被标记为可用空间。

9、硬盘基础知识:
扇区(Sector)为最小的物理储存单位,每个扇区为 512 bytes;
将扇区组成一个圆,那就是磁柱(Cylinder),磁柱是分区(partition)的最小单位;
第一个扇区最重要,里面有:(1)主启动记录(Master boot record, MBR)及分区表(partition table), 其中 MBR 占有 446 bytes,而 partition table 则占有 64 bytes。
所谓的磁盘分区指的是告诉操作系统『我这颗磁盘在此分区可以存放数据的区域是由 A 磁柱到 B 磁柱之间的区块』
那么指定分区的磁柱范围是记录在哪里?就是第一个扇区的分区表里!但是因为分区表仅有64bytes而已, 因此最多只能记录四个分区的记录,这四个记录我们称为主分区 (primary) 或扩展分区(extended) ,其中扩展分区还可以再分割出逻辑分区 (logical) , 而能被格式化的则仅有主分区和逻辑分区。
? 主分区与扩展分区最多可以有四个(硬盘的限制)
? 扩展分区最多只能有一个(操作系统的限制)
? 逻辑分区是由扩展分区切割出来的分区;
? 能够被格式化后,作为数据存放的分区为主分区和逻辑分区。扩展分区无法格式化;
? 逻辑分区的数量依操作系统而不同,在Linux系统中,IDE硬盘最多有59个逻辑分区(5号到63号), SATA硬盘则有11个逻辑分区(5号到15号)。

操作系统的文件数据除了文件实际内容外, 通常还有很多的属性,例如 Linux 操作系统的文件权限(rwx)与文件属性(拥有者、群组、时间参数等)。 文件系统通常会将这两部分的数据分别存放在不同的区块,权限与属性放置到 inode 中,至于实际数据则放置到 data block 区块中。 另外,还有一个超级区块 (superblock) 会记录整个文件系统的整体信息,包括 inode 与 block 的总量、使用量、剩余量等。 每个 inode 与 block 都有编号,至于这三个数据的意义可以简略说明如下:
? superblock:记录此 filesystem 的整体信息,包括inode/block的总量、使用量、剩余量, 以及文件系统的格式与相关信息等;
? inode:记录文件的属性,一个文件占用一个inode,同时记录此文件的数据所在的 block 号码;
? block:实际的数据内容,若文件太大时,会占用多个 block 。

原文地址:https://www.cnblogs.com/zzj2/p/3008907.html