**背景故事:**为什么写这个呢,因为有次给媳妇弄翻墙的shadows,配完了想让她每次开机就自动运行,然后发现了个事情,就是脚本有输出的时候直接用&是不大好的。还查了下,这可不应该啊,虽然说好久不用这个玩意,不过还是应该掌握的,所以就当记个笔记吧
关于用户环境变量profile的设置
登录后首先读取**/etc/profile**这个配置,这个配置是对**所有用户生效的**。然后**依次**寻找以下三个文件,这三个文件定义了对当前用户的配置
第一个是~/.bash_profile 第二个是~/.bash_login 第三个是~/.profile 高能预警: 以上三个文件只要有一个存在就不会读取后面的文件了,比如有了~/.bash_login就不读取~/.profile了
另外如果修改了profile的配置,直接修改后对于当前终端是不生效的,一般有两种方法使之生效
- source ~/.profile 【这里只是举例子,你修改的是哪个配置就source哪个配置】
- 退出当前终端再重新打开
关于sudu命令
当你使用sudo去执行一个程序时,处于安全的考虑,这个程序将在一个新的、最小化的环境中执行,也就是说,诸如PATH这样的环境变量,在sudo命令下已经被重置成默认状态了。所以当一个刚初始化的PATH变量中不包含你所要运行的程序所在的目录,用sudo去执行,你就会得到"command not found"的错误提示。要想改变PATH在sudo会话中的初始值,用文本编辑器打开/etc/sudoers文件,找到"secure_path"一行,当你执行sudo 命令时,“secure_path"中包含的路径将被当做默认PATH变量使用。添加所需要的路径(如 /usr/local/bin)到"secure_path"下,如下
|
|
关于export
使用export可以直接声明环境变量,不过这种方式只对当前终端有效。所以一般在脚本里或测试时会用到这种方式,如果是需要每次登陆都有这些变量的话,还是需要写入全局或用户的配置中去。
关于后台运行脚本或命令
一般用两种方法,一种是直接command+&,还有种就是nohup command+&。一般来说用第二种的多一点,因为如果脚本有输出的话终端就会被占用,而且关闭终端后台进程会终止;但是第二种会把输出记录在当前目录nohup.out的输出中,而且关闭端口后台进程也不会结束。
看命令吧,下面通过演示怎么在后台执行这个没用的脚本
|
|
- 使用&
1 2
sh hello.sh & #像上面这种有输出的,不要用这个,反正不推荐
- 使用nohup
1
nohup sh hello.sh &
- 查看后台任务jobs
1 2 3 4
jobs #bogon:tmp arvon$ jobs #[1]- Running sh xxx.sh & #[2]+ Running sh ppp.sh &
- 调出后台任务fg
1 2
fg %1 fg %2
- 使用ctrl+z将前台程序放入后台,此时程序会变为stop
- 使用bg将后台暂停的程序启动
1 2 3 4 5
bogon:tmp arvon$ jobs [1]- Stopped sh xxx.sh [2]+ Stopped sh ppp.sh bogon:tmp arvon$ bg %1 [1]- sh xxx.sh &