Skip to main content

后台执行命令:&和nohup

我们经常需要把一些命令放在后台执行,在Linux平台上,&和nohup就可以实现这个功能。
1. &
当在前台运行某个作业时,终端被该作业占据;可以在命令后面加上& 实现后台运行。例如:sh test.sh &
适合在后台运行的命令有f i n d、费时的排序及一些s h e l l脚本。在后台运行作业时要当心:需要用户交互的命令不要放在后台执行,因为这样你的机器就会在那里傻等。不过,作业在后台运行一样会将结果输出到屏幕上,干扰你的工作。如果放在后台运行的作业会产生大量的输出,最好使用下面的方法把它的输出重定向到某个文件中.
[code]
command > out.file 2>&1 &
[/code]

2. nohup
使用&命令后,作业被提交到后台运行,当前控制台没有被占用,但是一但把当前控制台关掉(退出帐户时),作业就会停止运行。nohup命令可以在你退出帐户之后继续运行相应的进程。nohup就是不挂起的意思( no hang up)。该命令的一般形式为:
[code]
nohup command &
[/code]

如果使用nohup命令提交作业,那么在缺省情况下该作业的所有输出都被重定向到一个名为nohup.out的文件中,除非另外指定了输出文件:
nohup command > myout.file 2>&1 &

一分钟了解nohup和&的功效

Linux 实例创建 FTP 站点

vsftpd 是 Linux 下的一款小巧轻快、安全易用的 FTP 服务器软件,是一款在各个 Linux 发行版中最受推崇的 FTP 服务器软件。本文以 CentOS 7.2 64位操作系统为例,说明如何在 Linux 实例上安装 vsftpd。

  • 安装 vsftpd
  • 配置 vsftpd
  • 设置安全组
  • 客户端测试

一: 安装 vsftpd
远程连接并登录到 Linux 实例。

运行以下命令安装 vsftpd。
yum install -y vsftpd
图片20

出现下图表示安装成功。
图片21

运行以下命令打开及查看etc/vsftpd。

cd /etc/vsftpd
ls
图片22

说明:
/etc/vsftpd/vsftpd.conf是核心配置文件。
/etc/vsftpd/ftpusers 是黑名单文件,此文件里的用户不允许访问 FTP 服务器。
/etc/vsftpd/user_list是白名单文件,是允许访问 FTP 服务器的用户列表。

运行以下命令设置开机自启动。
systemctl enable vsftpd.service
运行以下命令启动 FTP 服务。
systemctl start vsftpd.service
运行以下命令查看 FTP 服务端口。

netstat -antup | grep ftp
图片23

二: 配置 vsftpd

vsftpd 安装后默认开启了匿名 FTP 的功能,使用匿名 FTP,用户无需输入用户名密码即可登录 FTP 服务器,但没有权限修改或上传文件。
文本介绍了以下几个配置 vsftpd 的方法以及相关的参数说明,您可以根据具体需要进行参考。

配置匿名用户上传文件权限
配置本地用户登录
vsftpd.conf 的配置文件参数说明
配置匿名用户上传文件权限

修改 vsftpd.conf 的配置文件的选项,可以赋予匿名 FTP 更多的权限。
修改/etc/vsftpd/vsftpd.conf:
运行vim /etc/vsftpd/vsftpd.conf。
按键 “i” 进入编辑模式。
将写权限修改为write_enable=YES。
将匿名上传权限修改为anon_upload_enable=YES。
按键 “Esc” 退出编辑模式,然后按键“:wq” 保存并退出文件。
图片28

运行以下命令更改 /var/ftp/pub 目录的权限,为 FTP 用户添加写权限,并重新加载配置文件。

chmod o+w /var/ftp/pub/
systemctl restart vsftpd.service
图片29

配置本地用户登录

本地用户登录就是指用户使用 Linux 操作系统中的用户账号和密码登录 FTP 服务器。
vsftpd 安装后默只支持匿名 FTP 登录,用户如果试图使用 Linux 操作系统中的账号登录服务器,将会被 vsftpd 拒绝,但可以在 vsftpd 里配置用户账号和密码登录。具体步骤如下:

运行以下命令创建 ftptest 用户。
useradd ftptest
运行以下命令修改 ftptest 用户密码。
passwd ftptest
修改 ftptest 用户密码
图片31
修改/etc/vsftpd/vsftpd.conf:

运行vim /etc/vsftpd/vsftpd.conf。

按键 “i” 进入编辑模式。
将是否允许匿名登录 FTP 的参数修改为anonymous enable=NO。
将是否允许本地用户登录 FTP 的参数修改为local_enable=YES。
按键 “Esc” 退出编辑模式,然后按键“:wq” 保存并退出文件。
图片32

修改/etc/vsftpd/vsftpd.conf

vsftpd.conf 的配置文件参数说明

运行命令 cat /etc/vsftpd/vsftpd.conf 查看配置文件内容。

用户登录控制

参数 说明
anonymous_enable=YES 接受匿名用户
no_anon_password=YES 匿名用户login时不询问口令
anon_root=(none) 匿名用户主目录
local_enable=YES 接受本地用户
local_root=(none) 本地用户主目录
用户权限控制

参数 说明
write_enable=YES 可以上传(全局控制)
local_umask=022 本地用户上传文件的umask
file_open_mode=0666 上传文件的权限配合umask使用
anon_upload_enable=NO 匿名用户可以上传
anon_mkdir_write_enable=NO 匿名用户可以建目录
anon_other_write_enable=NO 匿名用户修改删除
chown_username=lightwiter 匿名上传文件所属用户名
三: 设置安全组

搭建好 FTP 站点后,您需要在实例的安全组的入方向添加一条放行 FTP 端口的规则,具体步骤参见 添加安全组规则,具体配置可以参考 安全组规则的典型应用_FTP。

四: 客户端测试
打开客户端的计算机,在路径栏输入ftp://服务器 IP 地址:FTP 端口(如果不填端口则默认访问21端口),例如:ftp://0.0.0.0:20。弹出输入用户名和密码的对话框表示配置成功,正确的输入用户名和密码后,即可对 FTP 文件进行相应权限的操作。

阿里云配置
python ftp

Linux如何查找大文件或目录总结

转发
1. 如何查找大文件?
其实很多时候,你需要了解当前系统下有哪些大文件,比如文件大小超过100M或1G(阀值视具体情况而定)。那么如何把这些大文件搜索出来呢?例如我要搜索当前目录下,超过800M大小的文件.

[root@getlnx01 u03]# pwd
/u03
[root@getlnx01 u03]# find . -type f -size +800M
./flash_recovery_area/backup/backupsets/ora_df873519197_s46815_s1
./flash_recovery_area/backup/backupsets/ora_df873523646_s46822_s1
./flash_recovery_area/backup/backupsets/ora_df873521714_s46818_s1
./flash_recovery_area/backup/backupsets/ora_df873522876_s46820_s1
./flash_recovery_area/backup/backupsets/ora_df873517396_s46813_s1
./flash_recovery_area/backup/backupsets/ora_df873523321_s46821_s1
./flash_recovery_area/backup/backupsets/ora_df873515765_s46811_s1
./flash_recovery_area/backup/backupsets/ora_df873520789_s46817_s1
./flash_recovery_area/backup/backupsets/ora_df873524162_s46823_s1
./flash_recovery_area/backup/backupsets/ora_df873518302_s46814_s1
./flash_recovery_area/backup/backupsets/ora_df873519953_s46816_s1
./flash_recovery_area/backup/backupsets/ora_df873516500_s46812_s1
./flash_recovery_area/backup/backupsets/ora_df873513413_s46809_s1
./flash_recovery_area/backup/backupsets/ora_df873514789_s46810_s1
./oradata/epps/invsubmat_d08.dbf
./oradata/epps/gmtinv_d08.dbf
./oradata/epps/gmtinv_x01.dbf
./oradata/epps/undotbs02.dbf
./oradata/epps/gmtinv_d07.dbf
./oradata/epps/undotbs01.dbf
./oradata/epps/gmtinv_x02.dbf

如上命令所示,我们仅仅能看到超过800M大小的文件的文件名称,但是对文件的信息(例如,文件大小、文件属性)一无所知,那么能否更详细显示一些文件属性或信息呢,当然可以,如下所示

root@getlnx01 u03]# find . -type f -size +800M -print0 | xargs -0 ls -l
-rw-r----- 1 oracle oinstall 2782846976 Mar 6 11:51 ./flash_recovery_area/backup/backupsets/ora_df873513413_s46809_s1
-rw-r----- 1 oracle oinstall 1878433792 Mar 6 11:53 ./flash_recovery_area/backup/backupsets/ora_df873514789_s46810_s1
-rw-r----- 1 oracle oinstall 1378492416 Mar 6 11:54 ./flash_recovery_area/backup/backupsets/ora_df873515765_s46811_s1
-rw-r----- 1 oracle oinstall 1641381888 Mar 6 11:56 ./flash_recovery_area/backup/backupsets/ora_df873516500_s46812_s1
-rw-r----- 1 oracle oinstall 1564065792 Mar 6 11:58 ./flash_recovery_area/backup/backupsets/ora_df873517396_s46813_s1
-rw-r----- 1 oracle oinstall 1663492096 Mar 6 12:00 ./flash_recovery_area/backup/backupsets/ora_df873518302_s46814_s1
-rw-r----- 1 oracle oinstall 1368244224 Mar 6 12:02 ./flash_recovery_area/backup/backupsets/ora_df873519197_s46815_s1
-rw-r----- 1 oracle oinstall 1629069312 Mar 6 12:04 ./flash_recovery_area/backup/backupsets/ora_df873519953_s46816_s1
-rw-r----- 1 oracle oinstall 1629954048 Mar 6 12:06 ./flash_recovery_area/backup/backupsets/ora_df873520789_s46817_s1
-rw-r----- 1 oracle oinstall 1202192384 Mar 6 12:07 ./flash_recovery_area/backup/backupsets/ora_df873521714_s46818_s1
-rw-r----- 1 oracle oinstall 1189388288 Mar 6 12:10 ./flash_recovery_area/backup/backupsets/ora_df873522876_s46820_s1
-rw-r----- 1 oracle oinstall 1089257472 Mar 6 12:11 ./flash_recovery_area/backup/backupsets/ora_df873523321_s46821_s1
-rw-r----- 1 oracle oinstall 1097687040 Mar 6 12:12 ./flash_recovery_area/backup/backupsets/ora_df873523646_s46822_s1
-rw-r----- 1 oracle oinstall 1051009024 Mar 6 12:13 ./flash_recovery_area/backup/backupsets/ora_df873524162_s46823_s1
-rw-r----- 1 oracle oinstall 4294975488 Apr 3 15:07 ./oradata/epps/gmtinv_d07.dbf
-rw-r----- 1 oracle oinstall 4194312192 Apr 1 22:36 ./oradata/epps/gmtinv_d08.dbf
-rw-r----- 1 oracle oinstall 4294975488 Apr 3 15:54 ./oradata/epps/gmtinv_x01.dbf
-rw-r----- 1 oracle oinstall 4294975488 Apr 3 15:57 ./oradata/epps/gmtinv_x02.dbf
-rw-r----- 1 oracle oinstall 4294975488 Apr 1 22:35 ./oradata/epps/invsubmat_d08.dbf
-rw-r----- 1 oracle oinstall 8589942784 Apr 4 09:55 ./oradata/epps/undotbs01.dbf
-rw-r----- 1 oracle oinstall 8589942784 Apr 4 09:15 ./oradata/epps/undotbs02.dbf

当我们只需要查找超过800M大小文件,并显示查找出来文件的具体大小,可以使用下面命令

[root@getlnx01 u03]# find . -type f -size +800M -print0 | xargs -0 du -h
1.3G ./flash_recovery_area/backup/backupsets/ora_df873519197_s46815_s1
1.1G ./flash_recovery_area/backup/backupsets/ora_df873523646_s46822_s1
1.2G ./flash_recovery_area/backup/backupsets/ora_df873521714_s46818_s1
1.2G ./flash_recovery_area/backup/backupsets/ora_df873522876_s46820_s1
1.5G ./flash_recovery_area/backup/backupsets/ora_df873517396_s46813_s1
1.1G ./flash_recovery_area/backup/backupsets/ora_df873523321_s46821_s1
1.3G ./flash_recovery_area/backup/backupsets/ora_df873515765_s46811_s1
1.6G ./flash_recovery_area/backup/backupsets/ora_df873520789_s46817_s1
1004M ./flash_recovery_area/backup/backupsets/ora_df873524162_s46823_s1
1.6G ./flash_recovery_area/backup/backupsets/ora_df873518302_s46814_s1
1.6G ./flash_recovery_area/backup/backupsets/ora_df873519953_s46816_s1
1.6G ./flash_recovery_area/backup/backupsets/ora_df873516500_s46812_s1
2.6G ./flash_recovery_area/backup/backupsets/ora_df873513413_s46809_s1
1.8G ./flash_recovery_area/backup/backupsets/ora_df873514789_s46810_s1
4.1G ./oradata/epps/invsubmat_d08.dbf
4.0G ./oradata/epps/gmtinv_d08.dbf
4.1G ./oradata/epps/gmtinv_x01.dbf
8.1G ./oradata/epps/undotbs02.dbf
4.1G ./oradata/epps/gmtinv_d07.dbf
8.1G ./oradata/epps/undotbs01.dbf
4.1G ./oradata/epps/gmtinv_x02.dbf


如果你还需要对查找结果按照文件大小做一个排序,那么可以使用下面命令:

[root@getlnx01 u03]# find . -type f -size +800M -print0 | xargs -0 du -h | sort -nr
1004M ./flash_recovery_area/backup/backupsets/ora_df873524162_s46823_s1
8.1G ./oradata/epps/undotbs02.dbf
8.1G ./oradata/epps/undotbs01.dbf
4.1G ./oradata/epps/invsubmat_d08.dbf
4.1G ./oradata/epps/gmtinv_x02.dbf
4.1G ./oradata/epps/gmtinv_x01.dbf
4.1G ./oradata/epps/gmtinv_d07.dbf
4.0G ./oradata/epps/gmtinv_d08.dbf
2.6G ./flash_recovery_area/backup/backupsets/ora_df873513413_s46809_s1
1.8G ./flash_recovery_area/backup/backupsets/ora_df873514789_s46810_s1
1.6G ./flash_recovery_area/backup/backupsets/ora_df873520789_s46817_s1
1.6G ./flash_recovery_area/backup/backupsets/ora_df873519953_s46816_s1
1.6G ./flash_recovery_area/backup/backupsets/ora_df873518302_s46814_s1
1.6G ./flash_recovery_area/backup/backupsets/ora_df873516500_s46812_s1
1.5G ./flash_recovery_area/backup/backupsets/ora_df873517396_s46813_s1
1.3G ./flash_recovery_area/backup/backupsets/ora_df873519197_s46815_s1
1.3G ./flash_recovery_area/backup/backupsets/ora_df873515765_s46811_s1
1.2G ./flash_recovery_area/backup/backupsets/ora_df873522876_s46820_s1
1.2G ./flash_recovery_area/backup/backupsets/ora_df873521714_s46818_s1
1.1G ./flash_recovery_area/backup/backupsets/ora_df873523646_s46822_s1
1.1G ./flash_recovery_area/backup/backupsets/ora_df873523321_s46821_s1

2.如何查找Linux下的大目录
譬如有时候磁盘空间告警了,而你平时又疏于管理、监控文件的增长,那么我需要快速的了解哪些目录变得比较大,那么此时我们可以借助du命令来帮我们解决这个问题。

[root@getlnx01 u03]# du -h --max-depth=1
16K ./lost+found
33G ./flash_recovery_area
37G ./oradata
70G .

如果你想知道flash_recovery_area目录下面有哪些大文件夹,那么可以将参数max-depth=2 ,如果你想对搜索出来的结果进行排序,那么可以借助于sort命令。如下所示

[root@getlnx01 u03]# du -h --max-depth=2 | sort -n
3.5G ./flash_recovery_area/EPPS
16K ./lost+found
29G ./flash_recovery_area/backup
33G ./flash_recovery_area
37G ./oradata
37G ./oradata/epps
70G .

参考资料
http://www.cnblogs.com/kerrycode/p/4391859.html

Linux 命令(3) mount

在unix系统中,所有可以访问的文件都是一个树形的结构。unix文件系统,根目录为/。某些文件可以来源于不同的设备中。 mount命令主要是用来挂载各种各样的设备到这个树形结构上。unmount命令用来卸载对应的设备。

命令格式为:
mount [-fnrsvw] [-t vfstype] [-o options] device dir

常用的命令如下:
1.mount -t type device dir
挂载给定的设备到目录dir。假如之前的dir有内容,挂载之后便不可见,只有卸载之后才能重新可见,所以一般挂载的目录最好是新目录
2.mount -h | mount -v
查看一些帮助信息,版本
3.mount [-l] [-t type]
列出当前挂载的所有的设备
[bash]
[caveup0@iZ23myrure3Z ~]$ mount -l
/dev/xvda1 on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw)
none on /proc/xen type xenfs (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
[/bash]
4.mount –bind olddir newdir
可以将文件系统同时绑定到两个不同的位置。其短格式:mount -B olddir newdir 或者在 fstab 中添加如下的条目:
/olddir /newdir none bind
这样,就可以从两个不同的位置访问完全相同的内容了。
甚至可以将同一个文件或目录绑定到自身(只是创建了一个挂载点而已):
mount –bind foo foo

上面的绑定挂载只能绑定一个单独的文件系统,而不包含其下级子目录上的文件系统。
如果想要递归绑定整个目录树上所有的文件系统,可以使用:
mount –rbind olddir newdir
或者其短格式:
mount -R olddir newdir

使用 –bind/–rbind 绑定挂载文件系统的时候,并不能改变其原有的挂载选项。
如果想要改变挂载选项,必须在绑定之后,再使用 remount 选项来修改:

更详细的命令,大家可以调 man mount。 欢迎大家拍砖!

LINUX 命令(2) cut

今天我要介绍cut命令,一个非常简单也好用的命令,可以迅速地从每行找到你想要的文本

语法:

[bash]
cut [-bn] [file] 或 cut [-c] [file] 或 cut [-df] [file]
[/bash]

1.按字节来选择文本,命令: cut -b

[bash]
[caveup0@iZ23myrure3Z ~]$ who |cut -b 3
v
[caveup0@iZ23myrure3Z ~]$ who |cut -b 3-5
veu
[caveup0@iZ23myrure3Z ~]$ who |cut -b 1-5
caveu
[caveup0@iZ23myrure3Z ~]$
[/bash]

2.按字符来选择文本,命令: cut -c

[bash]
[caveup0@iZ23myrure3Z ~]$ who |cut -c 2-3
av
[caveup0@iZ23myrure3Z ~]$
[/bash]

看了上边两个列子,好像-b和-c差不多,其实两个是不一样的。一个是用字节来分割,一个是用字符来分割。
一般ansi编码字符和字节是一样的,但是UTF8或者其他的编码,字节和字符是不相等的,大家可以试试中文


[bash]
[caveup0@iZ23myrure3Z ~]$ cat a.txt
我是一个人
[caveup0@iZ23myrure3Z ~]$ cut -b 2 a.txt

[caveup0@iZ23myrure3Z ~]$ cut -c 2 a.txt

[caveup0@iZ23myrure3Z ~]$
[/bash]

3.按给定的分隔符来选择文本,命令: cut -d <分隔符> -f
用-d来设置间隔符,然后用-f来设置我要取的是字段。
注意:cut只擅长处理“以一个字符间隔”的文本内容,如果想以多个字符来分割,可以结合sed来搭配使用。

[bash]
[caveup0@iZ23myrure3Z ~]$ cat /etc/passwd |head -n 4 |cut -d ':' -f1
root
bin
daemon
adm
[caveup0@iZ23myrure3Z ~]$
[/bash]

欢迎大家有更好的见解和使用心得!