catgroup linux_《数据仓库篇》——Linux的学习笔记2

书接老莫Moly:《数据仓库篇》——Linux的学习笔记1,本篇主要介绍Linux的权限管理、任务调度和进程管理。

二、权限管理

在展示权限管理指令之前,需要先粗略了解Linux的文件权限设定。

文件的rwx权限:

r:可以读取和查看,w:可以修改但只有拥有文件目录的w权限才可以删除文件,x:可以执行

目录的rwx权限:

r:可以读取以及用ls查看目录内容,w:可以修改以及目录内创建、删除和重命名目录,x:可以进入该目录

在命令行输入ll可查看当前路径下的文件列表及明细,文件明细列明了该文件的权限,下面用一个例子做简要介绍:

1、chmod(change mode)

可用chmod修改文件和目录的权限

语法

chmod [-cfvR] [--help] [--version] mode file...

参数

mode : 权限设定字串,格式如下 :

[ugoa...][[+-=][rwxX]...][,...]

其中:u 表示该文件的拥有者,g 表示与该文件的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是。

+ 表示增加权限、- 表示取消权限、= 表示唯一设定权限。

r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该文件是个子目录或者该文件已经被设定过为可执行。

其他参数说明:-c : 若该文件权限确实已经更改,才显示其更改动作

-f : 若该文件权限无法被更改也不要显示错误讯息

-v : 显示权限变更的详细资料

-R : 对目前目录下的所有文件与子目录进行相同的权限变更(即以递归的方式逐个变更)

--help : 显示辅助说明

--version : 显示版本

此外还可以用数字表示权限:r=4,w=2,x=1

当需要修改某个文件的权限为所有者可读可写可执行,所在组可读可执行,其他组可读时:

chmod 754 hello.txt

更多说明命令说明

chmod a+r file给file的所有用户增加读权限

chmod a-x file删除file的所有用户的执行权限

chmod a+rw file给file的所有用户增加读写权限

chmod +rwx file给file的所有用户增加读写执行权限

chmod u=rw,go= file对file的所有者设置读写权限,清空该用户组和其他用户对file的所有权限(空格代表无权限)

chmod -R u+r,go-r docs对目录docs和其子目录层次结构中的所有文件给用户增加读权限,而对用户组和其他用户删除读权限

chmod 664 file对file的所有者和用户组设置读写权限, 为其其他用户设置读权限

chmod 0755 file相当于u=rwx (4+2+1),go=rx (4+1 & 4+1)。0 没有特殊模式。

chmod 4755 file4设置了设置用户ID位,剩下的相当于 u=rwx (4+2+1),go=rx (4+1 & 4+1)。

2、chgrp(change group)

用于变更文件或目录的所属群组,该命令允许普通用户改变文件所属的组,只要该用户是该组的一员

语法

chgrp [-cfhRv][--help][--version][所属群组][文件或目录...] 或 chgrp [-cfhRv][--help][--reference=][--version][文件或目录...]

参数-c或--changes 效果类似"-v"参数,但仅回报更改的部分。

-f或--quiet或--silent  不显示错误信息。

-h或--no-dereference  只对符号连接的文件作修改,而不更动其他任何相关文件。

-R或--recursive  递归处理,将指定目录下的所有文件及子目录一并处理。

-v或--verbose  显示指令执行过程。

--help  在线帮助。

--reference=  把指定文件或目录的所属群组全部设成和参考文件或目录的所属群组相同。

--version  显示版本信息。

实例

将/home/abc.txt 文件的所在组修改成male

chgrp male /home/abc.txt

将/home/lala 目录下的所有文件和目录所在组修改成female

chgrp -R female /home/lala

3、chown(change owner)

chown 需要超级用户 root 的权限才能执行此命令。

只有超级用户和属于组的文件所有者才能变更文件关联组。非超级用户如需要设置关联组可能需要使用

使用权限 : root

语法

chown [-cfhvR] [--help] [--version] user[:group] file...

参数user : 新的文件拥有者的使用者 ID

group : 新的文件拥有者的使用者组(group)

-c : 显示更改的部分的信息

-f : 忽略错误信息

-h :修复符号链接

-v : 显示详细的处理信息

-R : 处理指定目录以及其子目录下的所有文件

--help : 显示辅助说明

--version : 显示版本

实例

把 /var/run/httpd.pid 的所有者设置 root:

chown root /var/run/httpd.pid

将文件 file1.txt 的拥有者设为 cat,群体的使用者 catgroup :

chown cat:catgroup file1.txt

将当前前目录下的所有文件与子目录的拥有者皆设为 cat,群体的使用者 catgroup:

chown -R runoob:runoobgroup *

三、任务调度

多数情况下公司会有相关的任务调度工具每天定时执行任务,但有时因为种种原因用不了这些工具,或者只是想自己安安静静地定期执行而不是放在线上的调度工具里,那么就可以用Linux的crontab命令。

crontab

crontab是用来定期执行程序的命令。

crond 命令每分锺会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作。

注意:新创建的 cron 任务,不会马上执行,至少要过 2 分钟后才可以,当然你可以重启 cron 来马上执行。

而 linux 任务调度的工作主要分为以下两类:1、系统执行的工作:系统周期性所要执行的工作,如备份系统数据、清理缓存

2、个人执行的工作:某个用户定期要做的工作,例如每隔10分钟检查邮件服务器是否有新信,这些工作可由每个用户自行设置

语法

crontab [ -u user ] file

crontab [ -u user ] { -l | -r | -e }

说明:

crontab 是用来让使用者在固定时间或固定间隔执行程序之用,换句话说,也就是类似使用者的时程表。

-u user 是指设定指定 user 的时程表,这个前提是你必须要有其权限(比如说是 root)才能够指定他人的时程表。如果不使用 -u user 的话,就是表示设定自己的时程表。

参数-e : 执行文字编辑器来设定时程表,内定的文字编辑器是 VI,如果你想用别的文字编辑器,则请先设定 VISUAL 环境变数来指定使用那个文字编辑器(比如说 setenv VISUAL joe)

-r : 删除目前的时程表

-l : 列出目前的时程表

时间格式如下:

f1 f2 f3 f4 f5 program其中 f1 是表示分钟,f2 表示小时,f3 表示一个月份中的第几日,f4 表示月份,f5 表示一个星期中的第几天。program 表示要执行的程序。

当 f1 为 * 时表示每分钟都要执行 program,f2 为 * 时表示每小时都要执行程序,其馀类推

当 f1 为 a-b 时表示从第 a 分钟到第 b 分钟这段时间内要执行,f2 为 a-b 时表示从第 a 到第 b 小时都要执行,其馀类推

当 f1 为 */n 时表示每 n 分钟个时间间隔执行一次,f2 为 */n 表示每 n 小时个时间间隔执行一次,其馀类推

当 f1 为 a, b, c,... 时表示第 a, b, c,... 分钟要执行,f2 为 a, b, c,... 时表示第 a, b, c...个小时要执行,其馀类推

* * * * *

- - - - -

| | | | |

| | | | +----- 星期中星期几 (0 - 7) (星期天 为0)

| | | +---------- 月份 (1 - 12)

| | +--------------- 一个月中的第几天 (1 - 31)

| +-------------------- 小时 (0 - 23)

+------------------------- 分钟 (0 - 59)

使用者也可以将所有的设定先存放在文件中,用 crontab file 的方式来设定执行时间。

实例

每月每天的午夜 0 点 20 分, 2 点 20 分, 4 点 20 分....执行 echo "haha"

crontab -e //进入任务调度编辑页面,下略

20 0-23/2 * * * echo "haha"

每隔一分钟执行/home/mytask.sh

*/1 * * * * /home/mytask.sh

四、进程管理

1、kill

删除执行中的程序或工作

语法

kill [-s ][程序] 或 kill [-l ]

参数-l  若不加选项,则 -l 参数会列出全部的信息名称。

-s  指定要送出的信息。

[程序]  [程序]可以是程序的PID或是PGID,也可以是工作编号。

使用 kill -l 命令列出所有可用信号。

最常用的信号是:1 (HUP):重新加载进程。

9 (KILL):杀死一个进程。

15 (TERM):正常停止一个进程。

实例

杀死进程

# kill 12345

强制杀死进程

# kill -KILL 123456

发送SIGHUP信号,可以使用一下信号

# kill -HUP pid

彻底杀死进程

# kill -9 123456

显示信号

# kill -l

1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP

6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1

11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM

16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP

21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ

26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR

31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3

38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8

43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13

48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12

53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7

58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2

63) SIGRTMAX-1 64) SIGRTMAX

杀死指定用户所有进程

#kill -9 $(ps -ef | grep hnlinux) //方法一 过滤出hnlinux用户进程

#kill -u hnlinux //方法二

2、clear

清除屏幕

3、ps(process status)

显示当前进程的状态,类似于 windows 的任务管理器

语法

ps [options] [--help]

参数ps 的参数非常多, 在此仅列出几个常用的参数并大略介绍含义

-A 列出所有的进程

-w 显示加宽可以显示较多的资讯

-au 显示较详细的资讯

-aux 显示所有包含其他使用者的行程

au(x) 输出格式 :

USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND

USER: 行程拥有者

PID: pid

%CPU: 占用的 CPU 使用率

%MEM: 占用的记忆体使用率

VSZ: 占用的虚拟记忆体大小

RSS: 占用的记忆体大小

TTY: 终端的次要装置号码 (minor device number of tty)

STAT: 该行程的状态:

D: 无法中断的休眠状态 (通常 IO 的进程)

R: 正在执行中

S: 静止状态

T: 暂停执行

Z: 不存在但暂时无法消除

W: 没有足够的记忆体分页可分配

<:>

N: 低优先序的行程

L: 有记忆体分页分配并锁在记忆体内 (实时系统或捱A I/O)

START: 行程开始时间

TIME: 执行的时间

COMMAND:所执行的指令

实例

# ps -A 显示进程信息

PID TTY TIME CMD

1 ? 00:00:02 init

2 ? 00:00:00 kthreadd

3 ? 00:00:00 migration/0

4、pstree

将所有行程以树状图显示,树状图将会以 pid (如果有指定) 或是以 init 这个基本行程为根 (root),如果有指定使用者 id,则树状图会只显示该使用者所拥有的行程。

语法

pstree [-a] [-c] [-h|-Hpid] [-l] [-n] [-p] [-u] [-G|-U] [pid|user]

pstree -V

参数-a 显示该行程的完整指令及参数, 如果是被记忆体置换出去的行程则会加上括号

-c 如果有重覆的行程名, 则分开列出(预设值是会在前面加上 *)

实例

显示进程的关系:

pstree

init-+-amd

|-apmd

|-atd

|-httpd---10*[httpd]

%pstree -p

init(1)-+-amd(447)

|-apmd(105)

|-atd(339)

%pstree -c

init-+-amd

|-apmd

|-atd

|-httpd-+-httpd

| |-httpd

| |-httpd

| |-httpd

....

特别表明在运行的进程:

# pstree -apnh //显示进程间的关系

同时显示用户名称:

# pstree -u //显示用户名称

5、killall

killall 用于杀死一个进程,与 kill 不同的是它会杀死指定名字的所有进程。

kill 命令杀死指定进程 PID,需要配合 ps 使用,而 killall 直接对进程对名字进行操作,更加方便。

语法

killall [选项] name

参数说明-e | --exact : 进程需要和名字完全相符

-I | --ignore-case :忽略大小写

-g | --process-group :结束进程组

-i | --interactive :结束之前询问

-l | --list :列出所有的信号名称

-q | --quite :进程没有结束时,不输出任何信息

-r | --regexp :将进程名模式解释为扩展的正则表达式。

-s | --signal :发送指定信号

-u | --user :结束指定用户的进程

-v | --verbose :显示详细执行过程

-w | --wait :等待所有的进程都结束

-V |--version :显示版本信息

--help :显示帮助信息

实例

# killall -9 php-fpm //结束所有的 php-fpm 进程

6、chkconfig

用于检查,设置系统的各种服务

语法

chkconfig [--add][--del][--list][系统服务] 或 chkconfig [--level ][系统服务][on/off/reset]

参数--add  增加所指定的系统服务,让chkconfig指令得以管理它,并同时在系统启动的叙述文件内增加相关数据。

--del  删除所指定的系统服务,不再由chkconfig指令管理,并同时在系统启动的叙述文件内删除相关数据。

--level  指定读系统服务要在哪一个执行等级中开启或关毕。

实例

列出chkconfig所知道的所有命令。

# chkconfig -list

开启服务。

# chkconfig telnet on //开启Telnet服务

# chkconfig --list //列出chkconfig所知道的所有的服务的情况

关闭服务

# chkconfig telnet off //关闭Telnet服务

# chkconfig -list //列出chkconfig所知道的所有的服务的情况

7、netstat

用于显示网络状态

语法

netstat [-acCeFghilMnNoprstuvVwx][-A][--ip]

参数-a或--all 显示所有连线中的Socket。

-A或-- 列出该网络类型连线中的相关地址。

-c或--continuous 持续列出网络状态。

-C或--cache 显示路由器配置的快取信息。

-e或--extend 显示网络其他相关信息。

-F或--fib 显示FIB。

-g或--groups 显示多重广播功能群组组员名单。

-h或--help 在线帮助。

-i或--interfaces 显示网络界面信息表单。

-l或--listening 显示监控中的服务器的Socket。

-M或--masquerade 显示伪装的网络连线。

-n或--numeric 直接使用IP地址,而不通过域名服务器。

-N或--netlink或--symbolic 显示网络硬件外围设备的符号连接名称。

-o或--timers 显示计时器。

-p或--programs 显示正在使用Socket的程序识别码和程序名称。

-r或--route 显示Routing Table。

-s或--statistics 显示网络工作信息统计表。

-t或--tcp 显示TCP传输协议的连线状况。

-u或--udp 显示UDP传输协议的连线状况。

-v或--verbose 显示指令执行过程。

-V或--version 显示版本信息。

-w或--raw 显示RAW传输协议的连线状况。

-x或--unix 此参数的效果和指定"-A unix"参数相同。

--ip或--inet 此参数的效果和指定"-A inet"参数相同。

实例

显示详细的网络状况

# netstat -a

显示当前户籍UDP连接状况

# netstat -nu

一点个人碎碎念:

Linux对数据分析师来说大部分情况是可有可无的工具,只需要知道怎么用即可。如工作中接触不到,没必要刻意花时间去学,毕竟用不上的话很快就忘了,强烈建议和工作内容结合起来去学去用。

参考内容

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值