Linux后台运行Jar方法

在linux服务器上运行Jar文件时通常的方法是:
$ java -jar test.jar
这种方式特点是ssh窗口关闭时,程序中止运行.或者是运行时没法切出去执行其他任务,有没有办法让Jar在后台运行呢:

方法一:
$ nohup java -jar test.jar &
//nohup 意思是不挂断运行命令,当账户退出或终端关闭时,程序仍然运行//当用 nohup 命令执行作业时,缺省情况下该作业的所有输出被重定向到nohup.out的文件中//除非另外指定了输出文件。

方法二:
$ nohup java -jar test.jar > temp.txt &
//这种方法会把日志文件输入到你指定的文件中,没有则会自动创建

jobs命令和 fg命令:
$ jobs
//那么就会列出所有后台执行的作业,并且每个作业前面都有个编号。//如果想将某个作业调回前台控制,只需要 fg + 编号即可。
$ fg 2

查看某端口占用的线程的pid
netstat -nlp |grep :8080

修改Linux交换空间的使用率

简单地说这个参数定义了系统对swap的使用倾向,默认值为60,值越大表示越倾向于使用swap。
可以设为0,这样做并不会禁止对swap的使用,只是最大限度地降低了使用swap的可能性。

通过sysctl -q vm.swappiness可以查看参数的当前设置。

修改参数的方法是修改vi /etc/sysctl.conf文件,加入vm.swappiness=xxx,并重起系统。
这个操作相当于是修改虚拟系统中的/proc/sys/vm/swappiness文件,将值改为XXX数值。

如果不想重起,可以通过sysctl -p动态加载/etc/sysctl.conf文件,但建议这样做之前先清空swap。

建议设置:vm.swappiness = 10

swap清理代码代码如下:
swapoff -a && swapon -a
注意:这样清理有个前提条件,空闲的内存必须比已经使用的swap空间大

内存使用到多少开始使用swap?
vm.swappiness 这个内核参数控制

/proc/sys/vm/swappiness
这个交换参数控制内核从物理内存移出进程,移到交换空间。该参数从0到100,当该参数=0,表示只要有可能就尽力避免交换进程移出物理内存;该参数=100,这告诉内核疯狂的将数据移出物理内存移到swap缓存中。

PS:设置vm.swappiness=0 后并不代表禁用swap分区,只是告诉内核,能少用到swap分区就尽量少用到,设置vm.swappiness=100的话,则表示尽量使用swap分区,默认的值是60
调整内存参数,当内存使用率不足10%(开始是默认值60)时在使用swap,尽量避免使用swap,减少唤醒软中断进程,从而降低ksoftirqd进程对cpu的占用。

关于linux内存分配机制
在linux的内存分配机制中,优先使用物理内存,当物理内存还有空闲时(还够用),不会释放其占用内存,就算占用内存的程序已经被关闭了,该程序所占用的内存用来做缓存使用,对于开启过的程序、或是读取刚存取过得数据会比较快。

Linux增加Swap分区大小

  1. 查看当前分区情况
    free -m
  2. 增加 swap 大小, 2G左右
    dd if=/dev/zero of=/var/swap bs=1024 count=2048000
  3. 设置交换文件
    mkswap /var/swap && chmod 600 /var/swap
  4. 立即激活启用交换分区
    swapon /var/swap
  5. 添加系统引导时自启动运行
    vi /etc/fstab 添加这一行 /var/swap swap swap defaults 0 0
  6. 收回 swap 空间
    swapoff /var/swap
  7. 从文件系统中回收
    rm /var/swap

CentOS7防火墙配置大全

启动CentOS/RHEL 7后,防火墙规则设置由firewalld服务进程默认管理。
一个叫做firewall-cmd的命令行客户端支持和这个守护进程通信以永久修改防火墙规则。

查看已经开放的端口:
firewall-cmd --list-ports

如要查询是否开启80端口则:
firewall-cmd --query-port=80/tcp

永久打开一个新端口(如TCP/8080),如果不使用“--permanent”标记,把么防火墙规则在重启后会失效:
firewall-cmd --permanent --zone=public --add-port=8080/tcp

移除一个端口:
firewall-cmd --permanent --zone=public --remove-port=8080/tcp

重新加载防火墙以生效:
firewall-cmd --reload

显示状态:
firewall-cmd --state

重启防火墙
systemctl stop firewalld.service #停止firewall
systemctl start firewalld.service #启动firewall
systemctl enable firewalld.service #开启firewall开机启动
systemctl disable firewalld.service #禁止firewall开机启动

命令含义:
–zone #作用域
–add-port=80/tcp #添加端口,格式为:端口/通讯协议
–permanent #永久生效,没有此参数重启后失效

Ubuntu设置时区和在线同步时间

Linux默认情况下使用UTC格式作为标准时间格式,如果在Linux下运行程序,且在程序中指定了与系统不一样的时区的时候,可能会造成时间错误。
如果是Ubuntu的桌面版,则可以直接在图形模式下修改时区信息,但如果是在Server版呢,则需要通过tzconfig来修改时区信息了。
使用方式(如将时区设置成Asia/Chongqing):
sudo tzconfig #如果命令不存在请使用:dpkg-reconfigure tzdata
然后按照提示选择 Asia对应的序号,选完后会显示一堆新的提示—输入城市名,如Shanghai或Chongqing,最后再用 sudo date -s “” 来修改本地时间。
按照提示进行选择时区,然后:
sudo cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
上面的命令是防止系统重启后时区改变。

网上同步时间
1.安装ntpdate工具
# sudo apt-get install ntpdate
2.设置系统时间与网络时间同步
# ntpdate cn.pool.ntp.org
3.将系统时间写入硬件时间
# hwclock -w

这里公布2个NTP服务器地址:
cn.pool.ntp.org
ntp.api.bz