返回顶部

Linux常用命令

授权用户某个目录权限
chown -R username filepath
例:chown -R user /home/a/test
 
chmod 权限数字 文件名
chmod 777 xxx
 
文件转码
dos2unix filenam
 
挂载目录(将test文件夹挂载到 /dev/sda1目录下)
mkdir /mnt/test
mount /dev/sda1 /mnt/test
 
后台运行命令 nohup 命令
例:
在生产环境下启jar包时,发现原来好好的nohup信息输出到指定文件中的功能,突然出问题了。现象是控制台输出的信息一部分输出到了我指定的文件,另一部分却输出到了nohup.out,而我是不想让它产生nohup.out文件,不知道是什么原因。启动命令是这样的:
nohup java -jar eureka-server.jar  > ../logs/eureka-server.out  &
执行命令,会提示 nohup: ignoring input and redirecting stderr to stdout 且会产生两个文件,一个是logs/myserver.out,另一个是nohup.out文件。
怎样才能让它不产生nohup.out文件呢。网上搜了半天,据说好象可以把后面的 “&” 改成 “2>&1 &”
解决:
把启动命令改成如下:
nohup java -jar eureka-server.jar  > ../logs/eureka-server.out  2>&1 &
nohup java -jar kaoqin20210327.jar >nohup.out 2>&1 &
再次执行,问题解决。
解释如下:
2> 表示把标准错误(stderr)重定向,标准输出(stdout)是1。
尖括号后面可以跟文件名,或者是&1, &2,分别表示重定向到标准输出和标准错误。
2> &1
1> &2
2> stderr.log
1> stdout.log
 
报错:
nohup:failed to run command permission denied
nohup:ignoring input
nohup:failed to run gommand permission denied
原因:执行.sh的权限不够
解决:
授权某个文件权限
chmod a+x /root/test.sh
 
报错:
nohup:ignoring input and redirecting stderr to stdout
解决:
nohup java -jar test.jar > temp.txt &
改为
nohup java -jar test.jar >temp.txt 2 > &1 &
完美解决问题
 
说明:
一个命令的执行伴随着三种输入输出
标准输入(stdin):默认指向键盘的输入,可以通过标准输入重定向<,让标准输入指向文件输入
标准输出(stdout) :指命令产生的正常的输出,如echo aaa,标准输出默认指向终端显示器,可以通过输出重定向>,让标准输出重定向到文件
标准错误输出(stderr):指命令产生的错误信息的输出,如执行了不存在的命令,标准错误输出也默认指向终端显示器,同样可以通过输出重定向>,让标准错误输出重定向到文件
所谓的输出重定向到文件,是指把默认输出到终端显示器的信息写入到指定文件
标准输入,标准输出,标准错误输出的文件描述符分别时0,1,2。
“>” 表示输出重定向
“2>&1”是指把标准错误输出重定向到标准输出的引用,即也重定向到file
 
例子:
#标准错误输出重定向到log
sh xxx.sh 2> log
#标准输出重定向到log1,标准错误输出重定向到log2
sh xxx.sh >log1 2>log2
#标准输出重定向到文件log,标准错误输出重定向到标准输出的引用
sh xxx.sh >log 2>&1
#标准错误输出重定向到文件testlog,标准输出和重定向到标准错误输出的引用
sh xxx.sh 2>log 1>&2
#标准输出重定向到log文件,标准错误输出也重定向到log文件
sh xxx.sh 1>log 2>log
 
补充说明:
command>a 2>a 与 command>a 2>&1的区别:
command 1>a 2>&1与command 1>a 2>a还是有区别的,区别就在于前者只打开一次文件a,后者会打开文件两次,并导致stdout被stderr覆盖,可能导致某些输出错误。
&1的含义就可以理解为用标准输出的引用,引用的就是重定向标准输出产生打开的a。从IO效率上来讲,command 1>a 2>&1比command 1>a 2>a的效率更高。
 
 
后台任务查看命令
jobs -l
ps -ef | grep sh
ps -aux | grep sh
ps -ef | grep gedit
 
查看当前后台运行的命令
有两个命令可以用,jobs和ps,区别是jobs用于查看当前终端后台运行的任务,换了终端就看不到了。而ps命令用于查看瞬间进程的动态,可以看到别的终端运行的后台进程。
(1)jobs命令
功能:查看当前终端后台运行的任务
jobs -l选项可显示当前终端所有任务的PID,jobs的状态可以是running,stopped,Terminated。+ 号表示当前任务,- 号表示后一个任务。
(2)ps命令
功能:查看当前的所有进程
ps -aux | grep "test.sh" #a:显示所有程序 u:以用户为主的格式来显示 x:显示所有程序,不以终端机来区分
 
停止后台进程
jobs kill -9 任务编号
jobs -l kill -9 pid
fg 切换到前台运行 ctrl + c
通过jobs 查看jobnum kill %jobnum
通过ps 查看进程号 PID kill %PID
 
关闭当前后台运行的命令
kill命令:结束进程
(1)通过jobs命令查看jobnum,然后执行 kill %jobnum
(2)通过ps命令查看进程号PID,然后执行 kill %PID
如果是前台进程的话,直接执行 Ctrl+c 就可以终止了
前后台进程的切换与控制
(1)fg命令
功能:将后台中的命令调至前台继续运行
如果后台中有多个命令,可以先用jobs查看jobnun,然后用 fg %jobnum 将选中的命令调出。
(2)Ctrl + z 命令
功能:将一个正在前台执行的命令放到后台,并且处于暂停状态
(3)bg命令
功能:将一个在后台暂停的命令,变成在后台继续执行
如果后台中有多个命令,可以先用jobs查看jobnum,然后用 bg %jobnum 将选中的命令调出继续执行。
 
磁盘情况查看
df -h
du -h
 
将文件切分 split命令(切分文件 可以按行切分,可以按文件大小切分)
把一个文件切分 按1000行切分成一个文件
split -l 1000 test.txt
 
查看某个函数
man split
 
posted @   MoreTryHarder  阅读(107)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库

点击右上角即可分享
微信分享提示
分手了就是分手了好聚好散大家都各自安好就好了。