7.Linux常用命令---系统管理

7.1 selinux --selinux管理命令

(1)查看selinux的状态

[root@rhino001 ~ ] getenforce
Disabled

临时关闭selinux的状态

[root@rhino001 ~ ]$ setenforce 0

(2)永久修改selinux的状态

[root@rhino001 ~ ]$ vim /etc/selinux/config

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled 
# SELINUXTYPE= can take one of three two values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected. 
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted

7.2 ps --显示进程信息命令

参数:
ps 的参数非常多, 在此仅列出几个常用的参数并大略介绍含义
-A 列出所有的进程
-w 显示加宽可以显示较多的资讯
-au 显示较详细的资讯
-aux 显示所有包含其他使用者的行
-e 显示所有进程
-f 显示完整格式输出
-l 显示长列表
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: 不可中断的静止 (通悸□□缜b进行 I/O 动作)
    R: 正在执行中
    S: 静止状态
    T: 暂停执行
    Z: 不存在但暂时无法消除
    W: 没有足够的记忆体分页可分配
    <: 高优先序的行程
    N: 低优先序的行程
    L: 有记忆体分页分配并锁在记忆体内
    s:该进程是控制进程
    l:该进程是所线程
    +:该进程运行在前台
  • START: 行程开始时间
  • TIME: 执行的时间
  • COMMAND:所执行的指令

实例

[root@localhost ~]# ps -auxp 22446
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.0  0.4 128548  4412 ?        Ss   Feb22   0:05 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root          2  0.0  0.0      0     0 ?        S    Feb22   0:00 [kthreadd]
root          3  0.0  0.0      0     0 ?        S    Feb22   0:00 [ksoftirqd/0]
root          5  0.0  0.0      0     0 ?        S<   Feb22   0:00 [kworker/0:0H]
root          7  0.0  0.0      0     0 ?        S    Feb22   0:00 [migration/0]
root          8  0.0  0.0      0     0 ?        S    Feb22   0:00 [rcu_bh]
root          9  0.0  0.0      0     0 ?        R    Feb22   0:01 [rcu_sched]
root         10  0.0  0.0      0     0 ?        S<   Feb22   0:00 [lru-add-drain]
root         11  0.0  0.0      0     0 ?        S    Feb22   0:00 [watchdog/0]
root         13  0.0  0.0      0     0 ?        S    Feb22   0:00 [kdevtmpfs]
root         14  0.0  0.0      0     0 ?        S<   Feb22   0:00 [netns]
root         15  0.0  0.0      0     0 ?        S    Feb22   0:00 [khungtaskd]

7.3 kill killall–结束进程命令

kill 命令用于删除执行中的程序或工作。
参数
信号 名称 描述
1 HUP 挂起
2 INT 中断
3 QUIT 结束运行
9 KILL 强制终止运行
15 TERM 正常结束运行
17 STOP 无条件 停止运行但不终止
18 TSTP 停止或暂停,但继续在后台运行
19 CONT 在STOP或TSTP之后恢复执行

kill -9 进程号 等同于 kill -KILL 进程号。

kill -9 pid号

killall命令支持通过进程名来结束进程,包括支持通配符扩展
killall http*

7.4 history --查看历史命令

history可以查看历史命令。!!可以唤回刚刚执行的命令。命令历史被保存到用户主目录的隐藏文件.bash_history中。bash命令的历史记录是先存放在内存中,当shell退出时才被写入历史文件,history -a可强制写入。history -n命令可以更新历史记录,使得历史命令在不同终端同步。
history 文件的默认位置是 ~/.bash_history

[root@VM-20-14-centos ~]# vim /etc/bashrc
//控制history记录的数量
export HISTSIZE=3000
//显示历史命令时间
#export HISTTIMEFORMAT="%F %T "
//关闭历史命令时间
export HISTTIMEFORMAT=
export PROMPT_COMMAND="history -a; $PROMPT_COMMAND"
unset HISTCONTROL
//清空操作记录
[root@VM-20-14-centos ~]# history -c

使用其它历史命令:!n n为命令编号

7.5 alias --给命令起别名

用户可利用alias,自定指令的别名。若仅输入alias,则可列出目前所有的别名设置。alias的效力仅基于该次登入的操作。若要每次登入是即自动设好别名,可在.profile或.cshrc中设定指令的别名。

alias -p可以查看全部的别名

alias [别名]=[命令]

例如

[root@localhost ~]# alias li='ls -lF'
[root@localhost ~]# li
total 5144
-rw-------. 1 root root    1930 Nov  1 19:57 anaconda-ks.cfg
drwxr-xr-x. 2 root root       6 Nov 16 17:09 centos/
-rw-------. 1 root root 5259264 Nov  1 19:59 core.2901
drwxr-xr-x. 2 root root       6 Nov  1 19:59 Desktop/
drwxr-xr-x. 2 root root       6 Nov  1 19:59 Documents/
drwxr-xr-x. 2 root root       6 Nov  1 19:59 Downloads/
-rw-r--r--. 1 root root    1978 Nov  1 19:58 initial-setup-ks.cfg
drwxr-xr-x. 2 root root       6 Nov  1 19:59 Music/
drwxr-xr-x. 2 root root       6 Nov  1 19:59 perl5/
drwxr-xr-x. 2 root root       6 Nov  1 19:59 Pictures/
drwxr-xr-x. 2 root root       6 Nov  1 19:59 Public/
drwxr-xr-x. 2 root root      36 Nov 16 16:11 python/
drwxr-xr-x. 2 root root       6 Nov  1 19:59 Templates/
drwxr-xr-x. 2 root root       6 Nov  1 19:59 Videos/

7.6 ftp命令

ftp> ascii # 设定以ASCII方式传送文件(缺省值) 
ftp> bell  # 每完成一次文件传送,报警提示. 
ftp> binary # 设定以二进制方式传送文件. 
ftp> bye  # 终止主机FTP进程,并退出FTP管理方式. 
ftp> case # 当为ON时,用MGET命令拷贝的文件名到本地机器中,全部转换为小写字母. 
ftp> cd   # 同UNIX的CD命令. 
ftp> cdup  # 返回上一级目录. 
ftp> chmod # 改变远端主机的文件权限. 
ftp> close # 终止远端的FTP进程,返回到FTP命令状态, 所有的宏定义都被删除. 
ftp> delete # 删除远端主机中的文件. 
ftp> dir [remote-directory] [local-file] # 列出当前远端主机目录中的文件.如果有本地文件,就将结果写至本地文件. 
ftp> get [remote-file] [local-file] # 从远端主机中传送至本地主机中. 
ftp> help [command] # 输出命令的解释. 
ftp> lcd # 改变当前本地主机的工作目录,如果缺省,就转到当前用户的HOME目录. 
ftp> ls [remote-directory] [local-file] # 同DIR. 
ftp> macdef         # 定义宏命令. 
ftp> mdelete [remote-files] # 删除一批文件. 
ftp> mget [remote-files]  # 从远端主机接收一批文件至本地主机. 
ftp> mkdir directory-name  # 在远端主机中建立目录. 
ftp> mput local-files # 将本地主机中一批文件传送至远端主机. 
ftp> open host [port] # 重新建立一个新的连接. 
ftp> prompt      # 交互提示模式. 
ftp> put local-file [remote-file] # 将本地一个文件传送至远端主机中. 
ftp> pwd # 列出当前远端主机目录. 
ftp> quit # 同BYE. 
ftp> recv remote-file [local-file] # 同GET. 
ftp> rename [from] [to]   # 改变远端主机中的文件名. 
ftp> rmdir directory-name  # 删除远端主机中的目录. 
ftp> send local-file [remote-file] # 同PUT. 
ftp> status  # 显示当前FTP的状态. 
ftp> system  # 显示远端主机系统类型. 
ftp> user user-name [password] [account] # 重新以别的用户名登录远端主机. 
ftp> ? [command] # 同HELP. [command]指定需要帮助的命令名称。如果没有指定 command,ftp 将显示全部命令的列表。
ftp> ! # 从 ftp 子系统退出到外壳。

ftp连接

[root@centos7-179-136 5gc]# ftp 192.168.153.51 30034

7.7 sz/rz–下载/上传文件

yum  -y install lrzsz #安装依赖包

sz:将选定的文件发送(send)到本地机器
rz:运行该命令会弹出一个文件选择窗口,从本地选择文件上传到Linux服务器

7.8 exec–执行shell命令

exec和source都属于bash内部命令(builtins commands),在bash下输入man exec或man source可以查看所有的内部命令信息。
bash shell的命令分为两类:外部命令和内部命令。外部命令是通过系统调用或独立的程序实现的,如sed、awk等等。内部命令是由特殊的文件格式(.def)所实现,如cd、history、exec等等。
在说明exe和source的区别之前,先说明一下fork的概念。
fork是linux的系统调用,用来创建子进程(child process)。子进程是父进程(parent process)的一个副本,从父进程那里获得一定的资源分配以及继承父进程的环境。子进程与父进程唯一不同的地方在于pid(process id)。
环境变量(传给子进程的变量,遗传性是本地变量和环境变量的根本区别)只能单向从父进程传给子进程。不管子进程的环境变量如何变化,都不会影响父进程的环境变量。
shell script:
有两种方法执行shell scripts,一种是新产生一个shell,然后执行相应的shell scripts;一种是在当前shell下执行,不再启用其他shell。
新产生一个shell然后再执行scripts的方法是在scripts文件开头加入以下语句

#!/bin/sh
一般的script文件(.sh)即是这种用法。这种方法先启用新的sub-shell(新的子进程),然后在其下执行命令。
另外一种方法就是上面说过的source命令,不再产生新的shell,而在当前shell下执行一切命令。
source:
source命令即点(.)命令。
在bash下输入man source,找到source命令解释处,可以看到解释”Read and execute commands from filename in the current shell environment and …”。从中可以知道,source命令是在当前进程中执行参数文件中的各个命令,而不是另起子进程(或sub-shell)。
exec:
在bash下输入man exec,找到exec命令解释处,可以看到有”No new process is created.”这样的解释,这就是说exec命令不产生新的子进程。那么exec与source的区别是什么呢?
exec命令在执行时会把当前的shell process关闭,然后换到后面的命令继续执行。

  1. 系统调用exec是以新的进程去代替原来的进程,但进程的PID保持不变。因此,可以这样认为,exec系统调用并没有创建新的进程,只是替换了原来进程上下文的内容。原进程的代码段,数据段,堆栈段被新的进程所代替。

一个进程主要包括以下几个方面的内容:
(1)一个可以执行的程序
(2) 与进程相关联的全部数据(包括变量,内存,缓冲区)
(3)程序上下文(程序计数器PC,保存程序执行的位置)

  1. exec是一个函数簇,由6个函数组成,分别是以excl和execv打头的。

执行exec系统调用,一般都是这样,用fork()函数新建立一个进程,然后让进程去执行exec调用。我们知道,在fork()建立新进程之后,父进程与子进程共享代码段,但数据空间是分开的,但父进程会把自己数据空间的内容copy到子进程中去,还有上下文也会copy到子进程中去。而为了提高效率,采用一种写时copy的策略,即创建子进程的时候,并不copy父进程的地址空间,父子进程拥有共同的地址空间,只有当子进程需要写入数据时(如向缓冲区写入数据),这时候会复制地址空间,复制缓冲区到子进程中去。从而父子进程拥有独立的地址空间。而对于fork()之后执行exec后,这种策略能够很好的提高效率,如果一开始就copy,那么exec之后,子进程的数据会被放弃,被新的进程所代替。

  1. exec与system的区别

(1) exec是直接用新的进程去代替原来的程序运行,运行完毕之后不回到原先的程序中去。
(2) system是调用shell执行你的命令,system=fork+exec+waitpid,执行完毕之后,回到原先的程序中去。继续执行下面的部分。
总之,如果你用exec调用,首先应该fork一个新的进程,然后exec. 而system不需要你fork新进程,已经封装好了

7.9 sync–数据同步

	sync命令是在关闭Linux系统时使用的。Linux 系统中欲写入硬盘的资料有的时候会了效率起见,会写到 filesystem buffer 中,这个 buffer 是一块记忆体空间,如果欲写入硬盘的资料存于此 buffer 中,而系统又突然断电的话,那么资料就会流失了,sync 指令会将存于 buffer 中的资料强制写入硬盘中。

7.10 httpd–Apache HTTP服务器程序

httpd为Apache HTTP服务器程序。直接执行程序可启动服务器的服务。

yum -y install httpd

参数说明:
-c 在读取配置文件前,先执行选项中的指令。
-C 在读取配置文件后,再执行选项中的指令。
-d<服务器根目录> 指定服务器的根目录。
-D<设定文件参数> 指定要传入配置文件的参数。
-f<设定文件> 指定配置文件。
-h 显示帮助。
-l 显示服务器编译时所包含的模块。
-L 显示httpd指令的说明。
-S 显示配置文件中的设定。
-t 测试配置文件的语法是否正确。
-v 显示版本信息。
-V 显示版本信息以及建立环境。
-X 以单一程序的方式来启动服务器。

7.11 date–显示或设定系统的日期与时间

时间方面:

  • % : 印出 %
  • %n : 下一行
  • %t : 在显示时,插入tab
  • %H : 小时(00…23)
  • %I : 小时(01…12)
  • %k : 小时(0…23)
  • %l : 小时(1…12)
  • %M : 分钟(00…59)
  • %p : 显示本地 AM 或 PM
  • %r : 直接显示时间 (12 小时制,格式为 hh:mm:ss [AP]M)
  • %s : 从 1970 年 1 月 1 日 00:00:00 UTC 到目前为止的秒数
  • %S : 秒(00…61)
  • %T : 直接显示时间 (24 小时制)
  • %X : 相当于 %H:%M:%S
  • %Z : 显示时区

日期方面:

  • %a : 星期几 (Sun…Sat)
  • %A : 星期几 (Sunday…Saturday)
  • %b : 月份 (Jan…Dec)
  • %B : 月份 (January…December)
  • %c : 直接显示日期与时间
  • %d : 日 (01…31)
  • %D : 直接显示日期 (mm/dd/yy)
  • %h : 同 %b
  • %j : 一年中的第几天 (001…366)
  • %m : 月份 (01…12)
  • %U : 一年中的第几周 (00…53) (以 Sunday 为一周的第一天的情形)
  • %w : 一周中的第几天 (0…6)
  • %W : 一年中的第几周 (00…53) (以 Monday 为一周的第一天的情形)
  • %x : 直接显示日期 (mm/dd/yy)
  • %y : 年份的最后两位数字 (00.99)
  • %Y : 完整年份 (0000…9999)

参数说明:

  • -d datestr : 显示 datestr 中所设定的时间 (非系统时间)
  • –help : 显示辅助讯息
  • -s datestr : 将系统时间设为 datestr 中所设定的时间
  • -u : 显示目前的格林威治时间
  • –version : 显示版本编号
#显示时间
# date
Tue May 11 19:40:13 CST 2021

# date '+%c'
Tue 11 May 2021 07:40:48 PM CST

# date '+%D' 
05/11/21

# date '+%x' 
05/11/2021

# date '+%T' 
19:42:12

# date '+%X' 
07:43:02 PM

#按自己的格式输出
date '+usr_time: $1:%M %P -hey'

#显示时间后跳行,再显示目前日期
date +'%T%n%D'

#显示月份与日数
date '+%B %d'

#显示日期与设定时间(12:34:56)
date --date '12:34:56'

#修改系统时间
[root@hadoop-1 ~]# date -s '2021-05-12 09:50:30'
Wed May 12 09:50:30 CST 2021
#时间戳转换成date
date -d @

7.12 sleep–用来将目前动作延迟一段时间

参数说明:
–help : 显示辅助讯息
–version : 显示版本编号
number : 时间长度,后面可接 s、m、h 或 d
其中 s 为秒,m 为 分钟,h 为小时,d 为日数

#休眠5分钟
sleep 5m

#显示目前时间后延迟 1 分钟,之后再次显示时间
date;sleep 1m;date

7.13 suspend–用于暂停执行shell

suspend为shell内建指令,可暂停目前正在执行的shell。若要恢复,则必须使用SIGCONT信息。

参数:
-f  若目前执行的shell为登入的shell,则suspend预设无法暂停此shell。若要强迫暂停登入的shell,则必须使用-f参数。

实例
暂停shell

# suspend 
-bash: suspend: 无法挂起一个登录 shell 
# suspend -f

7.14 kill–用于删除执行中的程序或工作

kill可将指定的信息送至程序。预设的信息为SIGTERM(15),可将指定程序终止。若仍无法终止该程序,可使用SIGKILL(9)信息尝试强制删除程序。程序或工作的编号可利用ps指令或jobs指令查看。

参数:
-l <信息编号>  若不加<信息编号>选项,则-l参数会列出全部的信息名称。
-s <信息名称或编号>  指定要送出的信息。
[程序]  [程序]可以是程序的PID或是PGID,也可以是工作编号。

#杀死进程
kill 12345

#强制杀死进程
kill -KILL 123456

#发送SIGHUP信号,可以使用一下信号
kill -HUP pid

#彻底杀死进程
kill -9 123456

#杀死指定用户所有进程
kill -9 $(ps -ef | grep hnlinux) //方法一 过滤出hnlinux用户进程
kill -u hnlinux //方法二
#显示信号
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

7.15 last–显示系统开机以来或从每月初登入者的讯息

参数:
-R 省略 hostname 的栏位
-num 展示前 num 个
username 展示 username 的登入讯息
tty 限制登入讯息包含终端机代号

# last -R -2
johnney pts/1 Mon Aug 14 20:42 still logged in
johnney pts/0 Mon Aug 14 19:59 still logged in
wtmp begins Tue Aug 1 09:01:10 2000 ### /var/log/wtmp
shell>> last -2 minery
minery pts/0 140.119.217.115 Mon Aug 14 18:37 - 18:40 (00:03)
minery pts/0 140.119.217.115 Mon Aug 14 17:22 - 17:24 (00:02)
wtmp begins Tue Aug 1 09:01:10 2000

7.16 shutdown命令可以用来进行关机程序

参数:
-t seconds : 设定在几秒钟之后进行关机程序
-k : 并不会真的关机,只是将警告讯息传送给所有只用者
-r : 关机后重新开机
-h : 关机后停机
-n : 不采用正常程序来关机,用强迫的方式杀掉所有执行中的程序后自行关机
-c : 取消目前已经进行中的关机动作
-f : 关机时,不做 fcsk 动作(检查 Linux 文档系统)
-F : 关机时,强迫进行 fsck 动作
+time : 设定关机的时间
“message” : 传送给所有使用者的警告讯息

实例

立即关机
# shutdown -h now

指定5分钟后关机
# shutdown +5 “System will shutdown after 5 minutes” //5分钟后关机并显示警告信息

7.17 sudo–以系统管理者的身份执行指令

也就是说,经由 sudo 所执行的指令就好像是 root 亲自执行。
参数:
-h 会显示版本编号及指令的使用方式说明
-l 显示出自己(执行 sudo 的使用者)的权限
-v 因为 sudo 在第一次执行时或是在 N 分钟内没有执行(N 预设为五)会问密码,这个参数是重新做一次确认,如果超过 N 分钟,也会问密码
-k 将会强迫使用者在下一次执行 sudo 时问密码(不论有没有超过 N 分钟)
-b 将要执行的指令放在背景执行
-p prompt 可以更改问密码的提示语,其中 %u 会代换为使用者的帐号名称, %h 会显示主机名称
-u username/#uid 不加此参数,代表要以 root 的身份执行指令,而加了此参数,可以以 username 的身份执行指令(#uid 为该 username 的使用者号码)
-s 执行环境变数中的 SHELL 所指定的 shell ,或是 /etc/passwd 里所指定的 shell
-H 将环境变数中的 HOME (家目录)指定为要变更身份的使用者家目录(如不加 -u 参数就是系统管理者 root )
command 要以系统管理者身份(或以 -u 更改为其他人)执行的指令

#以特定用户身份进行编辑文本
$ sudo -u uggc vi ~www/index.html
//以 uggc 用户身份编辑  home 目录下www目录中的 index.html 文件

#列出目前的权限
sudo -l

7.18 uname–用于显示系统信息

参数说明:
-a或–all  显示全部的信息。
-m或–machine  显示电脑类型。
-n或-nodename  显示在网络上的主机名称。
-r或–release  显示操作系统的发行编号。
-s或–sysname  显示操作系统名称。
-v  显示操作系统的版本。
–help  显示帮助。
–version  显示版本信息。

显示系统信息
# uname -a
Linux snail-hnlinux 2.6.32-21-generic #32-Ubuntu SMP Fri Apr 16 08:10:02 UTC 2010 i686 GNU/Linux

显示计算机类型
# uname -m
i686

显示计算机名
# uname -n
snail-hnlinux

显示操作系统发行编号
# uname -r
2.6.32-21-generic

显示操作系统名称
# uname -s
Linux

显示系统时间
# uname -v
32-Ubuntu SMP Fri Apr 16 08:10:02 UTC 2014

7.19 vlock–用于锁住虚拟终端

参数:
-a或–all  锁住所有的终端阶段作业,如果您在全屏幕的终端中使用本参数,则会将用键盘
切换终端机的功能一并关闭。
-c或–current  锁住目前的终端阶段作业,此为预设值。

7.20 who–显示系统中有哪些使用者正在上面

显示的资料包含了使用者 ID、使用的终端机、从哪边连上来的、上线时间、呆滞时间、CPU 使用量、动作等等。
参数:
-h : 不要显示标题列
-u : 不要显示使用者的动作/工作
-s : 使用简短的格式来显示
-f : 不要显示使用者的上线位置
-V : 显示程序版本

[root@localhost sudoers.d]# who
root     pts/0        2021-04-14 15:20 (192.168.204.1)
root     pts/1        2021-04-14 17:11 (192.168.204.1)

7.21 crontab–用来定期执行程序的命令

当安装完成操作系统之后,默认便会启动此任务调度命令。crond命令每分种会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作。而linux任务调度的工作主要分为以下两类:

  • 1、系统执行的工作:系统周期性所要执行的工作,如备份系统数据、清理缓存
  • 2、个人执行的工作:某个用户定期要做的工作,例如每隔10分钟检查邮件服务器是否有新信,这些工作可由每个用户自行设置
//查看crontab
[root@localhost]# cat /etc/crontab
//设定特定用户的定时服务
[root@localhost]#crontab -u
//列出当前用户定时服务内容
[root@localhost]#crontab -l
//删除当前用户的定时任务
[root@localhost]#crontab -r
//编辑当前用户的定时任务
[root@localhost]#crontab -e

image.png
每周一凌晨 2 点 10 分,以当前用户执行/root/report.sh 脚本

          • 分 时 日 月 周
            user_name 表示执行定时任务的用户,不指定时默认当前用户
            /root/report.sh 表示要执行的脚本语句

使用 - 可以划定范围:
0,0-3 _ _ * //表示每天的0-3点整的时候执行脚本
使用 ,可以枚举时间:
0,15,30,45 _ _ _ _ //表示每小时的0分,15分,35分,45分的时候执行脚本
使用 / 制定时间间隔:

  • /8 _ _ * //表示每8小时执行脚本
    组合用法:
    0-20/10 _ _ _ _ //表示在前20分钟,每隔10分钟执行脚本
    10 9 _ _ * hadoop jar /tycrtest/test2.jar //表示每天9点10分执行hadoop jar /tycrtest/test2.jar 这个脚本

7.22 dmesg–用于显示开机信息

kernel会将开机信息存储在ring buffer中。您若是开机时来不及查看信息,可利用dmesg来查看。开机信息亦保存在/var/log目录中,名称为dmesg的文件里。

参数说明:
-c  显示信息后,清除ring buffer中的内容。
-s<缓冲区大小>  预设置为8196,刚好等于ring buffer的大小。
-n  设置记录信息的层级。

7.23 export–用于设置或显示环境变量

参数说明:
-f  代表[变量名称]中为函数名称。
-n  删除指定的变量。变量实际上并未删除,只是不会输出到后续指令的执行环境中。
-p  列出所有的shell赋予程序的环境变量。

# export -p //列出当前的环境变量值
declare -x HOME=“/root“
declare -x LANG=“zh_CN.UTF-8“
declare -x LANGUAGE=“zh_CN:zh“
declare -x LESSCLOSE=“/usr/bin/lesspipe %s %s“
declare -x LESSOPEN=| /usr/bin/lesspipe %s“
declare -x LOGNAME=“root“

7.24 rpm–用于管理套件

参数说明:

  • -a  查询所有套件。
  • -b<完成阶段><套件档>+或-t <完成阶段><套件档>+  设置包装套件的完成阶段,并指定套件档的文件名称。
  • -c  只列出组态配置文件,本参数需配合"-l"参数使用。
  • -d  只列出文本文件,本参数需配合"-l"参数使用。
  • -e<套件档>或–erase<套件档>  删除指定的套件。
  • -f<文件>+  查询拥有指定文件的套件。
  • -h或–hash  套件安装时列出标记。
  • -i  显示套件的相关信息。
  • -i<套件档>或–install<套件档>  安装指定的套件档。
  • -l  显示套件的文件列表。
  • -p<套件档>+  查询指定的RPM套件档。
  • -q  使用询问模式,当遇到任何问题时,rpm指令会先询问用户。
  • -R  显示套件的关联性信息。
  • -s  显示文件状态,本参数需配合"-l"参数使用。
  • -U<套件档>或–upgrade<套件档> 升级指定的套件档。
  • -v  显示指令执行过程。
  • -vv  详细显示指令执行过程,便于排错。
  • -addsign<套件档>+  在指定的套件里加上新的签名认证。
  • –allfiles  安装所有文件。
  • –allmatches  删除符合指定的套件所包含的文件。
  • –badreloc  发生错误时,重新配置文件。
  • –buildroot<根目录>  设置产生套件时,欲当作根目录的目录。
  • –changelog  显示套件的更改记录。
  • –checksig<套件档>+  检验该套件的签名认证。
  • –clean  完成套件的包装后,删除包装过程中所建立的目录。
  • –dbpath<数据库目录>  设置欲存放RPM数据库的目录。
  • –dump  显示每个文件的验证信息。本参数需配合"-l"参数使用。
  • –excludedocs  安装套件时,不要安装文件。
  • –excludepath<排除目录>  忽略在指定目录里的所有文件。
  • –force  强行置换套件或文件。
  • –ftpproxy<主机名称或IP地址>  指定FTP代理服务器。
  • –ftpport<通信端口>  设置FTP服务器或代理服务器使用的通信端口。
  • –help  在线帮助。
  • –httpproxy<主机名称或IP地址>  指定HTTP代理服务器。
  • –httpport<通信端口>  设置HTTP服务器或代理服务器使用的通信端口。
  • –ignorearch  不验证套件档的结构正确性。
  • –ignoreos  不验证套件档的结构正确性。
  • –ignoresize  安装前不检查磁盘空间是否足够。
  • –includedocs  安装套件时,一并安装文件。
  • –initdb  确认有正确的数据库可以使用。
  • –justdb  更新数据库,当不变动任何文件。
  • –nobulid  不执行任何完成阶段。
  • –nodeps  不验证套件档的相互关联性。
  • –nofiles  不验证文件的属性。
  • –nogpg  略过所有GPG的签名认证。
  • –nomd5  不使用MD5编码演算确认文件的大小与正确性。
  • –nopgp  略过所有PGP的签名认证。
  • –noorder  不重新编排套件的安装顺序,以便满足其彼此间的关联性。
  • –noscripts  不执行任何安装Script文件。
  • –notriggers  不执行该套件包装内的任何Script文件。
  • –oldpackage  升级成旧版本的套件。
  • –percent  安装套件时显示完成度百分比。
  • –pipe<执行指令>  建立管道,把输出结果转为该执行指令的输入数据。
  • –prefix<目的目录>  若重新配置文件,就把文件放到指定的目录下。
  • –provides  查询该套件所提供的兼容度。
  • –queryformat<档头格式>  设置档头的表示方式。
  • –querytags  列出可用于档头格式的标签。
  • –rcfile<配置文件>  使用指定的配置文件。
  • –rebulid<套件档>  安装原始代码套件,重新产生二进制文件的套件。
  • –rebuliddb  以现有的数据库为主,重建一份数据库。
  • –recompile<套件档>  此参数的效果和指定"–rebulid"参数类似,当不产生套件档。
  • –relocate<原目录>=<新目录>  把本来会放到原目录下的文件改放到新目录。
  • –replacefiles  强行置换文件。
  • –replacepkgs  强行置换套件。
  • –requires  查询该套件所需要的兼容度。
  • –resing<套件档>+  删除现有认证,重新产生签名认证。
  • –rmsource  完成套件的包装后,删除原始代码。
  • –rmsource<文件>  删除原始代码和指定的文件。
  • –root<根目录>  设置欲当作根目录的目录。
  • –scripts  列出安装套件的Script的变量。
  • –setperms  设置文件的权限。
  • –setugids  设置文件的拥有者和所属群组。
  • –short-circuit  直接略过指定完成阶段的步骤。
  • –sign  产生PGP或GPG的签名认证。
  • –target=<安装平台>+  设置产生的套件的安装平台。
  • –test  仅作测试,并不真的安装套件。
  • –timecheck<检查秒数>  设置检查时间的计时秒数。
  • –triggeredby<套件档>  查询该套件的包装者。
  • –triggers  展示套件档内的包装Script。
  • –verify  此参数的效果和指定"-q"参数相同。
  • –version  显示版本信息。
  • –whatprovides<功能特性>  查询该套件对指定的功能特性所提供的兼容度。
  • –whatrequires<功能特性>  查询该套件对指定的功能特性所需要的兼容度。
安装软件
# rpm -hvi dejagnu-1.4.2-10.noarch.rpm
警告:dejagnu-1.4.2-10.noarch.rpm: V3 DSA 签名:NOKEY, key ID db42a60e
准备...           
########################################### [100%]

显示软件安装信息
# rpm -qi dejagnu-1.4.2-10.noarch.rpm

显示指定安装包
# rpm -qa | grep sudo

卸载指定安装包
#rpm -e sudo-devel-1.8.23-3.el7.x86_64
若存在依赖时
#rpm -e sudo-devel-1.8.23-3.el7.x86_64 --no'de

7.24 timeconfig–用于设置时区

这是Red Hat公司遵循GPL规则所开发的程序,它具有互动式操作界面,您可以轻易地利用方向键和空格键等,设置系统时间所属的时区。
参数:
–arc  使用Alpha硬件结构的格式存储系统时间。
–back  在互动式界面里,显示Back钮而非Cancel钮。
–test  仅作测试,并不真的改变系统的时区。
–utc  把硬件时钟上的时间视为CUT,有时也称为UTC或UCT。
实例

# timeconfig //设置时区

7.25 dump–用于备份文件系统

dump为备份工具程序,可将目录或整个文件系统备份至指定的设备,或备份成一个大文件。
参数:

  • -0123456789  备份的层级。
  • -b<区块大小>  指定区块的大小,单位为KB。
  • -B<区块数目>  指定备份卷册的区块数目。
  • -c  修改备份磁带预设的密度与容量。
  • -d<密度>  设置磁带的密度。单位为BPI。
  • -f<设备名称>  指定备份设备。
  • -h<层级>  当备份层级等于或大雨指定的层级时,将不备份用户标示为"nodump"的文件。
  • -n  当备份工作需要管理员介入时,向所有"operator"群组中的使用者发出通知。
  • -s<磁带长度>  备份磁带的长度,单位为英尺。
  • -T<日期>  指定开始备份的时间与日期。
  • -u  备份完毕后,在/etc/dumpdates中记录备份的文件系统,层级,日期与时间等。
  • -w  与-W类似,但仅显示需要备份的文件。
  • -W  显示需要备份的文件及其最后一次备份的层级,时间与日期。
备份文件到磁带
# dump -0 -u /dev/tape /home/

其中"-0"参数指定的是备份等级"-u"要求备份完毕之后将相应的信息存储到文件 /etc/dumpdates 留作记录

7.26 is-active,is-enabled–判断程序是否启动和开启自启动

适用于centos 7.x

[root@localhost ~]# systemctl is-active firewalld
active
[root@localhost ~]# systemctl is-enabled firewalld
enabled

7.27 xargs–给命令传递参数

xargs(英文全拼: eXtended ARGuments)是给命令传递参数的一个过滤器,也是组合多个命令的一个工具。
xargs 可以将管道或标准输入(stdin)数据转换成命令行参数,也能够从文件的输出中读取数据。
xargs 默认的命令是 echo,这意味着通过管道传递给 xargs 的输入将会包含换行和空白,不过通过 xargs 的处理,换行和空白将被空格取代。
xargs 是一个强有力的命令,它能够捕获一个命令的输出,然后传递给另外一个命令。
之所以能用到这个命令,关键是由于很多命令不支持|管道来传递参数,而日常工作中又有这个必要,所以就有了 xargs 命令,例如:

find /sbin -perm +700 |ls -l       #这个命令是错误的
find /sbin -perm +700 |xargs ls -l   #这样才是正确的

xargs 一般是和管道一起使用。
参数:

  • -a file 从文件中读入作为 stdin
  • -e flag ,注意有的时候可能会是-E,flag必须是一个以空格分隔的标志,当xargs分析到含有flag这个标志的时候就停止。
  • -p 当每次执行一个argument的时候询问一次用户。
  • -n num 后面加次数,表示命令在执行的时候一次用的argument的个数,默认是用所有的。
  • -t 表示先打印命令,然后再执行。
  • -i 或者是-I,这得看linux支持了,将xargs的每项名称,一般是一行一行赋值给 {},可以用 {} 代替。
  • -r no-run-if-empty 当xargs的输入为空的时候则停止xargs,不用再去执行了。
  • -s num 命令行的最大字符数,指的是 xargs 后面那个命令的最大命令行字符数。
  • -L num 从标准输入一次读取 num 行送给 command 命令。
  • -l 同 -L。
  • -d delim 分隔符,默认的xargs分隔符是回车,argument的分隔符是空格,这里修改的是xargs的分隔符。
  • -x exit的意思,主要是配合-s使用。。
  • -P 修改最大的进程数,默认是1,为0时候为as many as it can ,这个例子我没有想到,应该平时都用不到的吧。

实例
xargs 用作替换工具,读取输入数据重新格式化后输出。

//定义一个测试文件,内有多行文本数据
[root@host1 ~]# cat test.txt
a b c d e f g
h i j k l m n
o p q
r s t
u v w x y z

//多行输入单行输出
[root@host1 ~]# cat test.txt | xargs
a b c d e f g h i j k l m n o p q r s t u v w x y z

//-n 选项多行输出
[root@host1 ~]# cat test.txt | xargs -n3

a b c
d e f
g h i
j k l
m n o
p q r
s t u
v w x
y z

//-d 选项可以自定义一个定界符
[root@host1 ~]# echo "nameXnameXnameXname" | xargs -dX

name name name name

//结合 -n 选项使用
[root@host1 ~]# echo "nameXnameXnameXname" | xargs -dX -n2

name name
name name

假设一个命令为 sk.sh 和一个保存参数的文件 arg.txt:

#!/bin/bash
#sk.sh命令内容,打印出所有参数。

echo $*

arg.txt文件内容:

# cat arg.txt

aaa
bbb
ccc

xargs 的一个选项 -I,使用 -I 指定一个替换字符串 {},这个字符串在 xargs 扩展时会被替换掉,当 -I 与 xargs 结合使用,每一个参数命令都会被执行一次:

# cat arg.txt | xargs -I {} ./sk.sh -p {} -l

-p aaa -l
-p bbb -l
-p ccc -l

复制所有图片文件到 /data/images 目录下:

ls *.jpg | xargs -n1 -I {} cp {} /data/images

xargs 结合 find 使用
用 rm 删除太多的文件时候,可能得到一个错误信息:/bin/rm Argument list too long. 用 xargs 去避免这个问题:

find . -type f -name "*.log" -print0 | xargs -0 rm -f

xargs -0 将 \0 作为定界符。
统计一个源代码目录中所有 php 文件的行数:

find . -type f -name "*.php" -print0 | xargs -0 wc -l

查找所有的 jpg 文件,并且压缩它们:

find . -type f -name "*.jpg" -print | xargs tar -czvf images.tar.gz

xargs 其他应用
假如你有一个文件包含了很多你希望下载的 URL,你能够使用 xargs下载所有链接:

# cat url-list.txt | xargs wget -c

7.28 fuser–使用文件或文件结构识别进程

yum install -y psmisc

image.png

每个进程号后面都跟随一个字母,该字母指示进程如何使用文件。
c 指示进程的工作目录
e 指示该文件为进程的可执行文件
f 指示该文件被进程打开,默认情况下f字符不显示
F 指示该文件被进程代开写入,默认情况下F字符不显示
r 指示该目录为进程的根目录
m 指示进程使用该文件进程内存映射,亦或该文件为共享库文件,被进程映射进内存

参数:
-a 	显示命令行中指定的所有文件
-k	杀死访问指定文件的所有进程
-i	杀死进程前需要用户进行确认
-l	列出所有已知信号名
-n	选择不同的名称空间 (file, udp, or tcp)
-u	在每个进程后显示所属的用户名
-v	详细输出

7.29 查看linux系统版本信息的方式

[root@host1 ~]# uname -a
[root@host1 ~]# lsb_release -a
[root@host1 ~]# cat /etc/issue
[root@host1 ~]# cat /proc/version
[root@host1 ~]# cat /etc/redhat-release
  • 29
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值