将程序放入到后台:“ctrl+z”。临时暂停。使用命令“fg”将放到后台的命令调出来。
[root@localhost ~]# vim 1.txt
[1]+ 已停止 vim 1.txt
[root@localhost ~]# fg
vim 1.txt
如果有多个放在后台的任务,使用“jobs”查看有哪些任务放在后台。通过"fg+id号"的方式调出指定的任务。
[root@localhost ~]# jobs
[1]- 已停止 vim a.txt //id号
[2]+ 已停止 vim 1.txt
有“fg”那么还有一个“bg”,将命令从前台放到后台。
[root@localhost ~]# vmstat 1
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 32 122976 624 673348 0 0 1 4 29 24 0 0 100 0
...... //这个命令会 不停显示系统状态信息
[3]+ 已停止 vmstat 1
先将这个命令执行,然后使用“ctrl+z”放入后台,然后使用“bg”调到前台。如果有多个需要后面加对应程序的id号,如果不加id,则是最后一个放入后台的命令
[root@localhost ~]# bg
[1]+ vmstat 1 &
[root@localhost ~]# 0 0 32 127588 624 673596 0 0 0 0 405 353 0 0 100 0 0
这样的执行的方式,执行个不停。但是输出个不停,但是还有“命令行提示符”可以进行其他命令的执行。想要停止,就先输入“fg”,-->“ctrl+z”-->"fg"-->"ctrl+c"完全停止命令的执行。在后台这个命令也被停止了。
[root@localhost ~]# sleep 1000
//就是 睡眠1000秒。
使用“ctrl+z”放到后台。
一个终端放入后台的进程,不能使用另一个终端的jobs查看到;但是可以查看到进程。
8.7 shell变量(上)
linux系统当中已经定义好了一些变量,比如:PATH 、 HOME 、 PWD 、 LOGNAME等
如何查看系统变量呢:
-
[root@localhost ~]# env
-
XDG_SESSION_ID=37
-
HOSTNAME=localhost.localdomain
-
SELINUX_ROLE_REQUESTED=
-
TERM=xterm
-
SHELL=/bin/bash
-
HISTSIZE=1000
-
SSH_CLIENT=192.168.172.1 64980 22
-
SELINUX_USE_CURRENT_RANGE=
-
SSH_TTY=/dev/pts/0
-
USER=root
-
LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;36:*.mid=01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=01;36:*.axa=01;36:*.oga=01;36:*.spx=01;36:*.xspf=01;36:
-
MAIL=/var/spool/mail/root
-
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/tmp/:/root/bin
-
PWD=/root
-
LANG=zh_CN.UTF-8
-
SELINUX_LEVEL_REQUESTED=
-
HISTCONTROL=ignoredups
-
SHLVL=1
-
HOME=/root
-
LOGNAME=root
-
SSH_CONNECTION=192.168.172.1 64980 192.168.172.128 22
-
LESSOPEN=||/usr/bin/lesspipe.sh %s
-
XDG_RUNTIME_DIR=/run/user/0
-
_=/usr/bin/env
变量名习惯使用大写字母
除了 “env”,还可以使用:
[root@localhost ~]# set //还可以查看用户自定义的环境变量。shell脚本形式展示
用户自定义
[root@localhost ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/tmp/:/root/bin
[root@localhost ~]# a=111
[root@localhost ~]# echo $a
111
[root@localhost ~]# set | grep 111
_=111
a=111
变量名规则:字母、数字下划线,首位不能为数字
变量值有
特殊符号时,需要用
单引号括起来
-
[root@localhost ~]# bc=123
-
[root@localhost ~]# a="a$bc"
-
[root@localhost ~]# echo $a
-
a123
-
[root@localhost ~]# c='a$bc'
-
[root@localhost ~]# echo $c
-
a$bc
注意这里的用法。单引号双引号的区别。
变量的累加:
-
[root@localhost ~]# a=1
-
[root@localhost ~]# b=2
-
[root@localhost ~]# c="a$b"c
-
[root@localhost ~]# echo $c
-
a2c
-
[root@localhost ~]# echo $a$b
12
8.8 shell变量(下)
全局变量:
直接设置的变量的生效范围是有限的:
-
[root@localhost ~]# echo $SSH_TTY
-
/dev/pts/0
-
[root@localhost ~]# name=kgc
-
[root@localhost ~]# echo $name
-
kgc
另外打开一个终端:
-
[root@localhost ~]# echo $SSH_TTY
-
/dev/pts/1
-
[root@localhost ~]# echo $name
-
-
[root@localhost ~]#
发现设置的变量,并不能在两一个终端查询到
-
[root@localhost ~]# yum whatprovides */pstree
-
已加载插件:fastestmirror
-
Loading mirror speeds from cached hostfile
-
aa/filelists_db | 3.1 MB 00:00:00
-
psmisc-22.20-15.el7.x86_64 : Utilities for managing processes on your system
-
源 :aa
-
匹配来源:
-
文件名 :/usr/bin/pstree
[root@localhost ~]# pstree
......
-
├─sshd─┬─sshd───bash─┬─pstree
-
│ │ └─vmstat
-
│ └─sshd───bash
-
......
这里可以看出,定义的变量是存在与不同的bash中的。
如果想要在不同的子shell中生效则需要使用export来设置变量:
-
[root@localhost ~]# a=1
-
[root@localhost ~]# echo $a
-
1
-
[root@localhost ~]# bash
-
[root@localhost ~]# echo $a
-
-
[root@localhost ~]# export a=2
-
[root@localhost ~]# echo $a
-
2
-
[root@localhost ~]# bash
-
[root@localhost ~]# echo $a
-
2
并且,变量的继承是向下的,并不向上。通过"bash"来开启新的子shell。通过“exit”来回到上一层shell
取消变量:
-
[root@localhost ~]# echo $a
-
2
-
[root@localhost ~]# unset a
-
[root@localhost ~]# echo $a
-
-
[root@localhost ~]#
8.9 环境变量配置文件
/etc/profile:用户环境变量,交互,登录才执行
/etc/bashrc:用户不登录,执行shell生效
~/.bashrc:仅在当前用户生效的...
~/.bash_profile:当前用户的文件。修改过后,需要通过加载让它生效:] # source .bash_profile
~/.bash_history
~/.bash_logout
*自己定义命令行提示符格式:
[root@localhost ~]# echo $PS1
[\u@\h \W]\$ //这就是我们执行命令时,左边的提示符格式
我们自己做一个修改:
-
[root@localhost ~]# echo $PS1
-
[\u@\h \W]\$
-
[root@localhost ~]# cd /etc/sysconfig/network-scripts/
-
[root@localhost network-scripts]# PS1='[\u@\h \w]\$'
-
[root@localhost /etc/sysconfig/network-scripts]#
-
[root@localhost /etc/sysconfig/network-scripts]#PS1='<\u@\h \W>\$'
-
#
还能带颜色呢:
-
[root@localhost00m:~# cd PS1='[\033[01;32m\]\u@\h\[\033[\00m\]:\[\033[01;36m\]\w\[\033[00m\]]\$'
-
-
[root@localhost00m:/tmp# //记得上面的代码,直接粘贴到linux终端就能看到颜色的变化了
直接登陆系统进入到的是PS1环境。而比如mysql的登陆环境,登陆之后,就是登陆到PS2的环境
或者是如下环境:
-
[root@localhost00m:/tmp#for i in `seq 1 10`
-
> do
-
> echo $i
-
> done
-
1
-
2
-
3
-
4
-
5
-
6
-
7
-
8
-
9
-
10
-
[root@localhost00m:/tmp#