在linux上更改已经运行的程序的优先级

在linux上更改已经运行的程序的优先级,第1张

程序命令输入更改已经运行程序的优先级。

#taskset:

-p,设定一个已存在的pid,而不是重新开启一个新任务

-c,指定一个处理,可以指定多个,以逗号分隔,也可指定范围,如:2,4,5,6-8。

切换某个进程到指定的cpu上:taskset-cp313290。让某程序运行在指定的cpu上:taskset-c1,2,4-7tarjcftest。tar。gztest。

需要注意的是,taskset-cp313290在设定一个已经存在的pid时,子进程并不会继承父进程的,因此像tarzcfxxx tar。gzxxx这样的命令,最好在启动时指定cpu,如果在已经启动的情况下,则需要指定tar调用的gzip进程。

优点:

1、Linux由众多微内核组成,其源代码完全开源。

2、Linux继承了Unix的特性,具有非常强大的网络功能,其支持所有的因特网协议,包括TCP/IPv4、TCP/IPv6和链路层拓扑程序等,且可以利用Unix的网络特性开发出新的协议栈。

3、Linux系统工具链完整,简单 *** 作就可以配置出合适的开发环境,可以简化开发过程,减少开发中仿真工具的障碍,使系统具有较强的移植性。

通常情况下,任何基于Windows的exe程序都不能在LINUX下运行,这是因为它们的内核是不同的。但是可以通过在Linux上安装wine来运行exe程序。

Wine (“Wine Is Not an Emulator” 的首字母缩写)是一个能够在多种 POSIX-compliant *** 作系统(诸如 Linux,macOS 及 BSD 等)上运行 Windows 应用的兼容层。Wine 不是像虚拟机或者模拟器一样模仿内部的 Windows 逻辑,而是将 Windows API 调用翻译成为动态的 POSIX 调用,免除了性能和其他一些行为的内存占用,让你能够干净地集合 Windows 应用到你的桌面。

安装 WineHQ 安装包(Ubuntu 18042 64位系统为例)

如果您之前安装过来自其他仓库的 Wine 安装包,请在尝试安装 WineHQ 安装包之前删除它及依赖它的所有安装包(如:wine-mono、wine-gecko、winetricks),否则可能导致依赖冲突。

如果使用的是 64 位系统,请开启 32 bit 架构支持(如果之前没有开启的话):

# sudo dpkg --add-architecture i386

下载添加仓库密钥:

# wget -nc >

# apt-key add winehqkey

添加仓库:

# sudo apt-add-repository 'deb >

更新安装包:

# sudo apt update

安装Wine:

sudo apt install --install-recommends winehq-stable

至此wine就安装完成了。下面安装exe程序(以QQ为例)

下载以exe为后缀的QQ可以执行文件到桌面,右击该可执行文件选择“使用其他程序打开(A)”

在d出的对话框里选择“Wine Windows Program Loader ”

接下来就和在Windows下安装软件一样直到安装完成

注意事项:如非必要,一般不太建议在Linux上运行exe程序,可能会遇到各种各样的的Bug。

参考资料:

网页链接

我们在Linux下运行程序的时候,一般都是这样的 *** 作的,例如启动Tomcat:

[root@hostname bin]# /catalinash run

我一直不理解这个“/”到底是什么意思,其实很好理解。

1首先,我们看一下Windows在命令行里是怎么运行可执行程序的:

当前目录在D盘时,我运行C盘下的微信,需要指定完整的路径;当前目录就在微信的安装目录下时,我运行微信,直接指定exe可执行文件名就可以了。

搞懂了Windows怎么运行程序,Linux也是一样,说白了,都是直接敲文件名就能执行。

2那Linux中的“”到底是啥意思?为啥一定要敲一个“/”呢?

和/就是表示当前目录。同Windows一样,Linux也是当前目录下没有可执行文件时,需要指定完整的路径;当前目录下有可执行文件时,直接指定可执行文件名就可以了。只不过Linux有点呆呆的,执行当前目录下的可执行文件时,必须要额外多敲一个"/",否则的话它自己不知道在当前目录下找这个可执行文件。

不加这个“/”,Linux就会从环境变量PATH中定义的路径中找可执行文件,只有加了这个“/”之后,Linux才会从当前目录中找可执行文件。

外延1:Windows和Linux中的command not found道理也是一样的,都是给定的路径不正确,导致找不到可运行文件。

Windows中直接运行微信如图:

Linux中直接运行Tomcat如图:

外延2:Windows中的PATH这个环境变量和Linux中的PATH作用是一样的

Windows中能直接运行记事本,就是因为环境变量PATH里设置了C:\Windows\System32这个路径

当把PATH里中的C:\Windows\System32这个路径去掉之后,就无法直接在命令行中运行记事本了。

S中设置的启动设备(通常是硬盘)启动,

接着启动设备上安装的引导程序lilo或grub开始引导Linux,Linux首先进行内核的引导,

接下来执行init程序,init程序调用了rcsysinit和rc等程序,rcsysinit和rc当完成系

统初始化和运行服务的任务后,返回init;init启动了mingetty后,打开了终端供用户登

录系统,用户登录成功后进入了Shell,这样就完成了从开机到登录的整个启动过程。

加载内核

LILO启动之后,如果你选择了Linux作为准备引导的 *** 作系统,第一个被加载的东西就是内核。请记住此时的计算机内存中还不存在任何 *** 作系统, PC(因为它们天然的设计缺陷)也还没有办法存取机器上全部的内存。因此,内核就必须完整地加载到可用RAM的第一个兆字节之内。为了实现这个目的,内核是被压缩了的。这个文件的头部包含着必要的代码,先设置CPU进入安全模式(以此解除内存限制),再对内核的剩余部分进行解压缩。

执行内核

内核在内存中解压缩之后,就可以开始运行了。此时的内核只知道它本身内建的各种功能,也就是说被编译为模块的内核部分还不能使用。最基本的是,内核必须有足够的代码设置自己的虚拟内存子系统和根文件系统(通常就是ext2文件系统)。一旦内核启动运行,对硬件的检测就会决定需要对哪些设备驱动程序进行初始化。从这里开始,内核就能够挂装根文件系统(这个过程类似于Windows识别并存取C盘的过程)。内核挂装了根文件系统之后,将启动并运行一个叫做 init的程序。

注意:在这里我们故意略去了Linux内核启动的许多细节,这些细节只有内核开发人员才感兴趣。如果你好奇的话,可以访问>

fg 将后台中的命令调至前台继续运行

bg 将一个在后台暂停的命令,变成继续执行

jobs 查看当前有多少在后台运行的命令

举例:

$ jobs

[1]- Stopped vim abc

[2]+ Stopped vim def此处使用jobs查看后台任务列表,看到有两个进程处于后台

$ fg 2

执行该命令可将 "vim def"进程调至前台运行

在前台运行的程序中按ctrl + z 可以将一个正在前台执行的命令放到后台,并且暂停。

当用户打开电源后,BIOS开机自检,确定启动设备,安装启动设备,启动设备上面安装的GRUB开始引导Linux,Linux首先先进行内核引导,通过跟切换,执行init程序,init程序确定启动级别,根据启动级别进行系统初始化和运行的服务,然后返回init启动终端,用户通过验证成功登陆Shell,这就是一个从开机到登陆的启动过程。

一、硬件引导启动

当用户打开电源后POST开始自检,检测硬件设备是否确实或者存在故障(是否影响正常开机),如果不影响正常开机,就把任务交给BIOS。BIOS通过搜索,安装启动确定启动设备,启动项为硬盘,BIOS去读取硬盘的前512字节到内存,找到BootLoader,确定GRUB

二、GRUB引导启动内核

这一部分概况起来就是:GRUB程序加载执行并开始引导kernel程序

Boot Loader就是在 *** 作系统内核运行之前运行的一小段程序。通过GRUB引导可以确定内核程序,因为引导扇区只有446字节,GRUB只是一个小的程序安装在里面,真正使用的在MBR后面的扇区存放,我们想使用Bootloader GRUB功能必须读取后面的文件,Bootloader GRUB功能程序的运行和加载配置选项分为三个阶段

Stage1阶段:

Stage1阶段其实就是执行系统安装时预先写入到MBR的Bootloader中的程序。

Stage1阶段的任务仅是将硬盘0柱面0磁道2扇区的内容读入内存并执行,它是Stage15阶段或Stage2阶段的入口,引导进入Stage15阶段或Stage2阶段。 在此Stage1阶段,还没有识别文件系统的能力。

Stage15阶段:

stage15阶段是stage1阶段和stage2阶段的中间桥梁。stage15阶段具有识别启动分区文件系统的能力,此后GRUB程序便有能力去访问/boot分区下/grub目录下的 stage2文件,并将stage2载入内存执行。

Stage2阶段

Stage2阶段执行时,首先会解析GRUB程序的配置文件grubconf,并依配置文件决定是否显示系统启动菜单。然后加载内核镜像到内存中,通过initrd程序建立RAMDisk内存虚拟根文件系统。此时控制权将转交给内核程序。

三、内核引导启动

这一部分主要是通过在内存中建立虚拟根文件系统实现相关设备的驱动并建立和切换到真正的根文件系统。

解压内核镜像加载到内存,以及initrd程序建立RAMDisk内存虚拟根文件系统后,内核开始驱动基本硬件,并调用虚拟根文件系统中的init程序加载驱动模块初始化系统中各种设备的相关配置工作,其中包括CPU、I/O、存储设备等。当所需的驱动程序加载完后,会根据grubconf配置文件中“root=XXX”部分所指定的内容创建一个根设备,然后将根文件系统以只读的方式挂载,并切换到真正的根文件系统上,同时调用系统进程的/sbin/init程序,进入系统初始化阶段。

四、系统初始化

这一步是通过/sbin/init,init程序准备软件运行坏境,启动系统服务

通过/etc/inittab文件确定运行级别,然后去执行系统初始化脚本/etc/rcsysinit,为用户初始化用户空间环境,在完成初始化后,根据运行级别,系统开始对应级别的目录启动服务,关闭那些不要的服务(里面S99local -> /rclocal)用户自动服务启动脚本

运行级别:为系统运行或维护等目的而设定;0-6:7个级别

0:关机

1:单用户模式(root自动登录), single, 维护模式

2: 多用户模式,启动网络功能,但不会启动NFS;维护模式

3:多用户模式,正常模式;文本界面

4:预留级别;可同3级别

5:多用户模式,正常模式;图形界面

6:重启

默认级别:3, 5

切换级别:init #

查看级别:runlevel ; who -r

五、启动终端,用户登录

这一步是用户登录shell过程

如果没有改变级别,默认情况执行/sbin/mingetty打开6个纯文本终端,让用户输入用户名和密码。输入完成后,再调用login程序,核对密码。如果密码正确,就从文件 /etc/passwd 读取该用户指定的shell,然后启动这个shell。更多Linux介绍请查看《Linux就该这么学》。

第一种nohup命令来让程序在后台运行

括号内容表示可以将平时输出到控制台中的内容重定向到log这个文件中,这个是可选的,如果没有这个,则会默认输出到nohupout文件中。括号后面你的&表示后台运行。

举个例子:

第二种方法是写一个脚本,假设我们定义了一个脚本runsh

#!/bin/bash 是指此脚本使用/bin/bash来解释执行下面的语句,其中cd是表示将当前目录跳到所要运行文件所在目录,然后python3 文件名py则表示运行python文件,当写完该脚本后,执行以下命令来执行该脚本从而让程序在后台运行。

通过 ps -ef|grep python3 命令可以查看后台运行的进程都有哪些

以上就是关于在linux上更改已经运行的程序的优先级全部的内容,包括:在linux上更改已经运行的程序的优先级、LINUX里怎样运行exe文件、如何理解Linux下使用“./”运行程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/10142333.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存