首页 |  我的博客 |  查看该博主内容分类 | 

linux后台运行nohup命令的使用及2>&1字符详解

说明

  1. nohup

    • nohup(no hang up),指不间断,不挂断,在teminal/账户时退出依然持续运行进程的命令;
    • 不指定日志文件的情况下,输出内容默认写入当前运行命令路径下的nohup.out文件中。
  2. 2>&1

    • 0 表示stdin标准输入,用户键盘输入的内容
    • 1 表示stdout标准输出,输出到显示屏的内容
    • 2 表示stderr标准错误,报错内容
    • 2>&1 是一个整体,>左右不能有空格,即将错误内容重定向输入到标准输出中去。

整体含义

nohup python my.py >> /usr/local/python/xxf/my.log 2>&1 &

// 2>&1中的`&`是为了区分文件1和标准输出1,是一个区分符号,好比python中转义符的作用。而最末尾的`&`是将该命令后台运行。

该命令的含义是用python不间断的运行my.py这个脚本,并且将脚本输出的内容重定向输入my.log中(>>意为追加,如果用>会让其中的内容清空)
后面的my.log 2>&1 是将2(错误内容)输入到&1(标准输出),而&1(标准输出)输入到my.log中,即错误和标准内容都会输出到my.log中。总的来说,就是下面代码的简化版。

nohup python my.py 1>> /usr/local/python/xxf/my.log &
nohup python my.py 2>> /usr/local/python/xxf/my.log &

补充:
my.py >> my.log 和my.py 1 >> my.log是等价的,默认是输出1(标准输出)

如果不想要日志输出

把内容丢入/dev/null即可

nohup tomcat.sh > /dev/null 2>&1 &

将错误和标准全部丢入/dev/null中,全部销毁。

posted @ 2023-04-09 17:11  Z哎呀  阅读(8436)  评论(0编辑  收藏  举报
// let homeEle = document.querySelector('body') // homeEle.setAttribute('id', 'particles-js') // /* ---- particles.js config ---- */ // particlesJS("particles-js", { // "particles": { // "number": { // "value": 380, // "density": { // "enable": true, // "value_area": 800 // } // }, // "color": { // "value": "#ffffff" // }, // "shape": { // "type": "circle", // "stroke": { // "width": 0, // "color": "#000000" // }, // "polygon": { // "nb_sides": 5 // }, // "image": { // "src": "img/github.svg", // "width": 100, // "height": 100 // } // }, // "opacity": { // "value": 0.5, // "random": false, // "anim": { // "enable": false, // "speed": 1, // "opacity_min": 0.1, // "sync": false // } // }, // "size": { // "value": 3, // "random": true, // "anim": { // "enable": false, // "speed": 40, // "size_min": 0.1, // "sync": false // } // }, // "line_linked": { // "enable": true, // "distance": 150, // "color": "#ffffff", // "opacity": 0.4, // "width": 1 // }, // "move": { // "enable": true, // "speed": 6, // "direction": "none", // "random": false, // "straight": false, // "out_mode": "out", // "bounce": false, // "attract": { // "enable": false, // "rotateX": 600, // "rotateY": 1200 // } // } // }, // "interactivity": { // "detect_on": "canvas", // "events": { // "onhover": { // "enable": true, // "mode": "grab" // }, // "onclick": { // "enable": true, // "mode": "push" // }, // "resize": true // }, // "modes": { // "grab": { // "distance": 140, // "line_linked": { // "opacity": 1 // } // }, // "bubble": { // "distance": 400, // "size": 40, // "duration": 2, // "opacity": 8, // "speed": 3 // }, // "repulse": { // "distance": 200, // "duration": 0.4 // }, // "push": { // "particles_nb": 4 // }, // "remove": { // "particles_nb": 2 // } // } // }, // "retina_detect": true // }); // var count_particles, stats, update; // stats = new Stats; // stats.setMode(0); // stats.domElement.style.position = 'absolute'; // stats.domElement.style.left = '0px'; // stats.domElement.style.top = '0px'; // document.body.appendChild(stats.domElement); // count_particles = document.querySelector('.js-count-particles'); // update = function() { // stats.begin(); // stats.end(); // if (window.pJSDom[0].pJS.particles && window.pJSDom[0].pJS.particles.array) { // count_particles.innerText = window.pJSDom[0].pJS.particles.array.length; // } // requestAnimationFrame(update); // }; // requestAnimationFrame(update);