新聞中心
Introduction

Linux is an operating system that is used by millions of users due to its user-friendly interface, high compatibility with other platforms, and open-source community-driven development. One of the benefits of using Linux is the ability to perform tasks and administrative activities using the command line interface (CLI). One of the most commonly used commands in the Linux CLI is the “su” command which is used to switch between different users’ accounts. In this article, we will discuss the process of using the su command to switch between different users in Linux.
Understanding What the “su” Command Does
The “su” command in Linux is used to switch between different users’ accounts. This can be helpful in situations where a user needs to perform administrative activities or run a program that requires root or superuser privileges. The “su” command is also useful for switching between different user accounts without logging out of the current user account. The command can be used to switch between different users, such as root, admin, and regular user accounts.
Syntax for Using the “su” Command
The basic syntax for using the su command is as follows:
su [username]
This command will prompt the user to enter the password of the account they want to switch to. Once the correct password is entered, the user will be in a new shell as the user they switched to. The new shell will have the default environment variables of that user.
How to Use the “su” Command
To use the “su” command, the user needs to follow the steps below:
Step 1: Open a terminal window on the Linux system.
Step 2: Type in the following command:
su [username]
Replace [username] with the name of the user account you want to switch to. For example, if you want to switch to the root user account, the command would be:
su root
Step 3: Press enter to execute the command.
Step 4: You will be prompted to enter the password of the user account you want to switch to. Enter the password and press enter.
Step 5: If the password is correct, you will be logged into the new shell as the user you switched to.
Step 6: To exit from the new shell and return to the previous shell, type the “exit” command.
Conclusion
The “su” command is an essential command for Linux users who need to switch between different user accounts in a shell environment. The command is simple to use and requires the user to enter the password of the user account they want to switch to. The “su” command is an excellent way to perform administrative tasks and run programs that require root or superuser privileges. By following the steps outlined above, Linux users can easily switch between user accounts using the “su” command.
成都網(wǎng)站建設(shè)公司-創(chuàng)新互聯(lián),建站經(jīng)驗豐富以策略為先導10多年以來專注數(shù)字化網(wǎng)站建設(shè),提供企業(yè)網(wǎng)站建設(shè),高端網(wǎng)站設(shè)計,響應(yīng)式網(wǎng)站制作,設(shè)計師量身打造品牌風格,熱線:028-86922220Linux進程管理及作業(yè)控制的啟動進程
鍵入需要運行的程序的程序名,執(zhí)行一個程序,其實也就是啟動了一個進程。在Linux系統(tǒng)中每個進程都具有一個進程號,用于系統(tǒng)識別和調(diào)度進程。啟動一個進程有兩個主要途徑:手工啟動和調(diào)度啟動,后者是事先進行設(shè)置,根據(jù)用戶要求自行啟動。 由用戶輸入命令,直接啟動一個進程便是手工啟動進程。但手工啟動進程又可以分為很多種,根據(jù)啟動的進程類型不同、性質(zhì)不同,實際結(jié)果也不一樣,下面分別介紹。
1. 前臺啟動
這或許是手工啟動一個進程的最常用的方式。一般地,用戶鍵入一個命令“l(fā)s –l”或攜指,這就已經(jīng)啟動了一個進程,而且是一個前臺的進程。這時候系統(tǒng)其實已經(jīng)處于一個多進程狀態(tài)?;蛟S有些用戶會疑惑:我只啟動了一個進程而已。但實際上有許多運行在后臺的、系統(tǒng)啟動時就已經(jīng)自動啟動的進程正在悄悄運行著。還有的用戶在鍵入“l(fā)s –l”命令以后趕緊使用“ps –x”查看,卻沒有看到ls進程,也覺得很奇怪。其實這是因為ls這個進程結(jié)束太快,使用ps查看時該進程已經(jīng)執(zhí)行結(jié)束了。如果啟動一個比較耗時的進程:
find / -name fox.jpg
然后再把該進程掛起,使用ps查看,就會看到一個find進程在里面。
2. 后臺啟動
直接從后臺手工啟動一個進程用得比較少一些,除非是該進程甚為耗時,且用戶也不急著需要結(jié)果的時候。假設(shè)用戶要啟動一個需要長時間運行的格式化文本文件的進程。為了不使整個shell在格式化過程中都處于“癱瘓”狀態(tài),從后臺啟動這個進程是明智的選擇。
$ troff –me notes > note_form &
4513
$
由上例可見,從后臺啟動進程其實就是在命令結(jié)尾加上一個&號。鍵入命令以后,出現(xiàn)一個數(shù)字,這個數(shù)字就是該進程的編號,也稱為PID,然后就出現(xiàn)了提示符。用戶可以繼續(xù)其他工作。
上面介紹了前、后臺啟動的兩種情況。實際上這兩種啟動方式有個共同的特點,就是新進程都是由當前shell這個進程產(chǎn)生的。也就是說,是shell創(chuàng)建了新進程,于是就稱這種關(guān)系為進程間的父子關(guān)系。這里shell是父進程,而新進程是子進程。一個父進程可以有多個子進程,一般地,子進程結(jié)束后才能繼續(xù)父進程;當然如果是從后臺啟動,那就不用等待子進程結(jié)束了。
一種比較特殊的情況是在使用管道符的時候。例如:
nroff -man ps.1|grep kill|more
這時候?qū)嶋H上是同時啟動了三個進程。請注意是同時啟動的,所有放在管道兩邊的進程都將被同時啟動,它們都是當前shell的子程序,互相之間可以稱為兄弟進程。
以上介紹的是手工啟動進程的一些內(nèi)容,作為一名系統(tǒng)管理員,很多時候都需要把事情安排好以后讓其自動運行。因為管理員不是機器,也有離開的時候,所以有些必須要做的工作而恰好管理員不能親自操作,這時候就需要使用調(diào)度啟動進程了。 有時候需要對系統(tǒng)進行一些比較費時而且占用資源的維護工作,這些工作適合在深夜進行,這時候用戶就可以事先進行調(diào)度安排,指定任務(wù)運行的時間或者場合,到時候系統(tǒng)會自動完成這一切工作。
要使用自動啟動進程的功能,就需要掌握以下幾個啟動命令。
at命令
用戶使用at命令在指定時刻執(zhí)行指定的命令序列。也就是說,該命令至少需要指定一個命令、一個執(zhí)行時間才可以正常運行。at命令可以只指定時間,也可以時間和日期一起指定。需要注意的是,指定時間有個系統(tǒng)判別問題。比如說:用戶現(xiàn)在指定了一個執(zhí)行時間:凌晨3:20,而發(fā)出at命令的時間是頭天晚上的20:00,那么究竟是在哪一天執(zhí)行該命令呢?如果用戶在3:20以前仍然在工作,那么該命令將在這個時候完成;如果用戶3:20以前就退出了工作狀態(tài),那么該命令將在第二天凌晨才得到執(zhí)行。下面是at命令的語法格式:
at 時間
at -c 作業(yè)
at允許使用一套相當復雜的指定時間的方法,實際上是將POSIX.2標準擴展了。它可以接受在當天的hh:mm(小時:分鐘)式的時間指定。如果該時間已經(jīng)過去,那么就放在第二天執(zhí)行。當然也可以使用midnight(深夜),noon(中午),teatime(飲茶時間,一般是下午4點)等比較模衫配糊的詞語來指定時間。用戶還可以采用12小時計時制,即在時間后面加上AM(上午)或者PM(下午)來說明是上午還是下午。
也可以指定命令執(zhí)行的具體隱和日期,指定格式為month day(月 日)或者mm/dd/yy(月/日/年)或者dd.mm.yy(日.月.年)。指定的日期必須跟在指定時間的后面。
上面介紹的都是絕對計時法,其實還可以使用相對計時法,這對于安排不久就要執(zhí)行的命令是很有好處的。指定格式為:now + count time-units ,now就是當前時間,time-units是時間單位,這里可以是 minutes(分鐘)、hours(小時)、days(天)、weeks(星期)。count是時間的數(shù)量,究竟是幾天,還是幾小時,等等。
還有一種計時方法就是直接使用today(今天)、tomorrow(明天)來指定完成命令的時間。下面通過一些例子來說明具體用法。
指定在今天下午5:30執(zhí)行某命令。假設(shè)現(xiàn)在時間是中午12:30,1999年2月24日,其命令格式如下:
at 5:30pm
at 17:30
at 17:30 today
at now + 5 hours
at now + 300 minutes
at 17:30 24.2.99
at 17:30 2/24/99
at 17:30 Feb 24
以上這些命令表達的意義是完全一樣的,所以在安排時間的時候完全可以根據(jù)個人喜好和具體情況自由選擇。一般采用絕對時間的24小時計時法可以避免由于用戶自己的疏忽造成計時錯誤的情況發(fā)生,例如上例可以寫成:
at 17:30 2/24/99
這樣非常清楚,而且別人也看得懂。
對于at命令來說,需要定時執(zhí)行的命令是從標準輸入或者使用-f選項指定的文件中讀取并執(zhí)行的。如果at命令是從一個使用su命令切換到用戶shell中執(zhí)行的,那么當前用戶被認為是執(zhí)行用戶,所有的錯誤和輸出結(jié)果都會送給這個用戶。但是如果有郵件送出的話,收到郵件的將是原來的用戶,也就是登錄時shell的所有者。
$ at -f work 4pm + 3 days
在三天后下午4點執(zhí)行文件work中的作業(yè)。
$ at -f work 10am Jul 31
在7月31日上午10點執(zhí)行文件work中的作業(yè)。
在任何情況下,超級用戶都可以使用這個命令。對于其他用戶來說,是否可以使用就取決于兩個文件:/etc/at.allow和/etc/at.deny。如果/etc/at.allow文件存在的話,那么只有在其中列出的用戶才可以使用at命令;如果該文件不存在,那么將檢查/etc/at.deny文件是否存在,在這個文件中列出的用戶均不能使用該命令。如果兩個文件都不存在,那么只有超級用戶可以使用該命令;空的/etc/at.deny文件意味著所有的用戶都可以使用該命令,這也是默認狀態(tài)。
下面對命令中的參數(shù)進行說明。
-V 將標準版本號打印到標準錯誤中。
-q queue 使用指定的隊列。隊列名稱是由單個字母組成,合法的隊列名可以由a-z或者A-Z。a隊列是at命令的默認隊列。
-m 作業(yè)結(jié)束后發(fā)送郵件給執(zhí)行at命令的用戶。
-f file 使用該選項將使命令從指定的file讀取,而不是從標準輸入讀取。
-l atq命令的一個別名。該命令用于查看安排的作業(yè)序列,它將列出用戶排在隊列中的作業(yè),如果是超級用戶,則列出隊列中的所有工作。
命令的語法格式如下:
atq
-d atrm 命令的一個別名。該命令用于刪除指定要執(zhí)行的命令序列,語法格式如下:
atrm 作業(yè)
-c 將命令行上所列的作業(yè)送到標準輸出。
找出系統(tǒng)中所有以txt為后綴名的文件,并且進行打印。打印結(jié)束后給用戶foxy發(fā)出郵件通知取件。指定時間為十二月二十五日凌晨兩點。
首先鍵入:
$ at 2:00 12/25/99
然后系統(tǒng)出現(xiàn)at>提示符,等待用戶輸入進一步的信息,也就是需要執(zhí)行的命令序列:
at> find / -name “*.txt”|lpr
at> echo “foxy:All texts have been printed.You can take them over.Good day!River” |mail -s ”job done” foxy
輸入完每一行指令然后回車,所有指令序列輸入完畢后,使用組合鍵結(jié)束at命令的輸入。這時候屏幕將出現(xiàn)如下信息:
warning:command will be executed using /bin/sh.
job 1 at:00
提醒用戶將使用哪個shell來執(zhí)行該命令序列。 實際上如果命令序列較長或者經(jīng)常被執(zhí)行的時候,一般都采用將該序列寫到一個文件中,然后將文件作為at命令的輸入來處理。這樣不容易出錯。
例5> 上面的例子可以修改如下:
將命令序列寫入到文件/tmp/printjob,語句為:
$ at -f /tmp/printjob 2:00 12/25/99
這樣一來,at命令將使用文件中的命令序列,屏幕顯示如下:
Warning:command will be executed using /bin/sh.
job 2 at:00
當然也可以采用以下命令:
$ at find / -name *.txt|lpr
at> echo “foxy:All texts have been printed.You can take them over.Good day!River” |mail -s ”job done” foxy
現(xiàn)在這個命令就會在合適的時間進行了,進行完后會發(fā)回一個信息。
仍然使用組合鍵來結(jié)束命令輸入。而且batch和at命令都將自動轉(zhuǎn)入后臺,所以啟動的時候也不需要加上&符號。
cron命令
前面介紹的兩條命令都會在一定時間內(nèi)完成一定任務(wù),但是要注意它們都只能執(zhí)行一次。也就是說,當指定了運行命令后,系統(tǒng)在指定時間完成任務(wù),一切就結(jié)束了。但是在很多時候需要不斷重復一些命令,比如:某公司每周一自動向員工報告頭一周公司的活動情況,這時候就需要使用cron命令來完成任務(wù)了。
實際上,cron命令是不應(yīng)該手工啟動的。cron命令在系統(tǒng)啟動時就由一個shell腳本自動啟動,進入后臺(所以不需要使用&符號)。一般的用戶沒有運行該命令的權(quán)限,雖然超級用戶可以手工啟動cron,不過還是建議將其放到shell腳本中由系統(tǒng)自行啟動。
首先cron命令會搜索/var/spool/cron目錄,尋找以/etc/passwd文件中的用戶名命名的crontab文件,被找到的這種文件將載入內(nèi)存。例如一個用戶名為foxy的用戶,它所對應(yīng)的crontab文件就應(yīng)該是/var/spool/cron/foxy。也就是說,以該用戶命名的crontab文件存放在/var/spool/cron目錄下面。cron命令還將搜索/etc/crontab文件,這個文件是用不同的格式寫成的。
cron啟動以后,它將首先檢查是否有用戶設(shè)置了crontab文件,如果沒有就轉(zhuǎn)入“休眠”狀態(tài),釋放系統(tǒng)資源。所以該后臺進程占用資源極少。它每分鐘“醒”過來一次,查看當前是否有需要運行的命令。命令執(zhí)行結(jié)束后,任何輸出都將作為郵件發(fā)送給crontab的所有者,或者是/etc/crontab文件中MAILTO環(huán)境變量中指定的用戶。
上面簡單介紹了一些cron的工作原理,但是cron命令的執(zhí)行不需要用戶干涉;需要用戶修改的是crontab中要執(zhí)行的命令序列,所以下面介紹crontab命令。
crontab命令
crontab命令用于安裝、刪除或者列出用于驅(qū)動cron后臺進程的表格。也就是說,用戶把需要執(zhí)行的命令序列放到crontab文件中以獲得執(zhí)行。每個用戶都可以有自己的crontab文件。下面就來看看如何創(chuàng)建一個crontab文件。
在/var/spool/cron下的crontab文件不可以直接創(chuàng)建或者直接修改。crontab文件是通過crontab命令得到的?,F(xiàn)在假設(shè)有個用戶名為foxy,需要創(chuàng)建自己的一個crontab文件。首先可以使用任何文本編輯器建立一個新文件,然后向其中寫入需要運行的命令和要定期執(zhí)行的時間。
然后存盤退出。假設(shè)該文件為/tmp/test.cron。再后就是使用crontab命令來安裝這個文件,使之成為該用戶的crontab文件。鍵入:
crontab test.cron
這樣一個crontab 文件就建立好了??梢赞D(zhuǎn)到/var/spool/cron目錄下面查看,發(fā)現(xiàn)多了一個foxy文件。這個文件就是所需的crontab 文件。用more命令查看該文件的內(nèi)容可以發(fā)現(xiàn)文件頭有三行信息:
#DO NOT EDIT THIS FILE -edit the master and reinstall.
#(test.cron installed on Mon Feb 22 14:20:)
#(cron version –$Id:crontab.c,v 2./01/17 03:20:37 vivie Exp $)
大概意思是:
#切勿編輯此文件——如果需要改變請編輯源文件然后重新安裝。
#test.cron文件安裝時間:14:20:20 02/22/1999
如果需要改變其中的命令內(nèi)容時,還是需要重新編輯原來的文件,然后再使用crontab命令安裝。
可以使用crontab命令的用戶是有限制的。如果/etc/cron.allow文件存在,那么只有其中列出的用戶才能使用該命令;如果該文件不存在但cron.deny文件存在,那么只有未列在該文件中的用戶才能使用crontab命令;如果兩個文件都不存在,那就取決于一些參數(shù)的設(shè)置,可能是只允許超級用戶使用該命令,也可能是所有用戶都可以使用該命令。
crontab命令的語法格式如下:
crontab file
crontab {-l|-r|-e}
之一種格式用于安裝一個新的crontab 文件,安裝來源就是file所指的文件,如果使用“-”符號作為文件名,那就意味著使用標準輸入作為安裝來源。
-u 如果使用該選項,也就是指定了是哪個具體用戶的crontab 文件將被修改。如果不指定該選項,crontab 將默認是操作者本人的crontab ,也就是執(zhí)行該crontab 命令的用戶的crontab 文件將被修改。但是請注意,如果使用了su命令再使用crontab 命令很可能就會出現(xiàn)混亂的情況。所以如果是使用了su命令,更好使用-u選項來指定究竟是哪個用戶的crontab文件。
-l 在標準輸出上顯示當前的crontab。
-r 刪除當前的crontab文件。
-e 使用VISUAL或者EDITOR環(huán)境變量所指的編輯器編輯當前的crontab文件。當結(jié)束編輯離開時,編輯后的文件將自動安裝。
# crontab -l #列出用戶目前的crontab。
10 6 * * * date
0 */2 * * * date
0 23-7/2,8 * * * date
#
在crontab文件中如何輸入需要執(zhí)行的命令和時間。該文件中每行都包括六個域,其中前五個域是指定命令被執(zhí)行的時間,最后一個域是要被執(zhí)行的命令。每個域之間使用空格或者制表符分隔。格式如下:
minute hour day-of-month month-of-year day-of-week commands
之一項是分鐘,第二項是小時,第三項是一個月的第幾天,第四項是一年的第幾個月,第五項是一周的星期幾,第六項是要執(zhí)行的命令。這些項都不能為空,必須填入。如果用戶不需要指定其中的幾項,那么可以使用*代替。因為*是統(tǒng)配符,可以代替任何字符,所以就可以認為是任何時間,也就是該項被忽略了。在表4-1中給出了每項的合法范圍。
表4-1 指定時間的合法范圍
時間
合法值
minute 00-59
hour 00-23,其中00點就是晚上12點
day-of-month
01-31
month-of-year
01-12
day-of-week
0-6,其中周日是0
這樣用戶就可以往crontab 文件中寫入無限多的行以完成無限多的命令。命令域中可以寫入所有可以在命令行寫入的命令和符號,其他所有時間域都支持列舉,也就是域中可以寫入很多的時間值,只要滿足這些時間值中的任何一個都執(zhí)行命令,每兩個時間值中間使用逗號分隔。
5,15,25,35,45,55 16,17,18 * * * command
這就是表示任意天任意月,其實就是每天的下午4點、5點、6點的5 min、15 min、25 min、35 min、45 min、55 min時執(zhí)行命令。
在每周一,三,五的下午3:00系統(tǒng)進入維護狀態(tài),重新啟動系統(tǒng)。那么在crontab 文件中就應(yīng)該寫入如下字段:
00 15 * * 1,3,5 shutdown -r +5
然后將該文件存盤為foxy.cron,再鍵入crontab foxy.cron安裝該文件。
每小時的10分,40分執(zhí)行用戶目錄下的innd/bbslin這個指令:
10,40 * * * * innd/bbslink
每小時的1分執(zhí)行用戶目錄下的bin/account這個指令:
1 * * * * bin/account
每天早晨三點二十分執(zhí)行用戶目錄下如下所示的兩個指令(每個指令以;分隔):
20 3 * * * (/bin/rm -f expire.ls logins.bad;bin/expire>expire.1st)
每年的一月和四月,4號到9號的3點12分和3點55分執(zhí)行/bin/rm -f expire.1st這個指令,并把結(jié)果添加在mm.txt這個文件之后(mm.txt文件位于用戶自己的目錄位置)。
12,,4 * /bin/rm -f expire.1st>> m.txt
我們來看一個超級用戶的crontab文件:
#Run the ‘a(chǎn)trun’ program every minutes
#This runs anything that’s due to run from ‘a(chǎn)t’.See man ‘a(chǎn)t’ or ‘a(chǎn)trun’. 0,5,10,15,20,25,30,35,40,45,50,55 * * * * /usr/lib/atrun
40 7 * * * updatedb
8,10,22,30,39,46,54,58 * * * * /bin/sync
進程的掛起及恢復命令bg、fg
作業(yè)控制允許將進程掛起并可以在需要時恢復進程的運行,被掛起的作業(yè)恢復后將從中止處開始繼續(xù)運行。只要在鍵盤上按,即可掛起當前的前臺作業(yè)。
$ cat >
text.file + stopped cat > text.file
$ jobs + stopped cat >text.file
在鍵盤上按后,將掛起當前執(zhí)行的命令cat。使用jobs命令可以顯示shell的作業(yè)清單,包括具體的作業(yè)、作業(yè)號以及作業(yè)當前所處的狀態(tài)。
恢復進程執(zhí)行時,有兩種選擇:用fg命令將掛起的作業(yè)放回到前臺執(zhí)行;用bg命令將掛起的作業(yè)放到后臺執(zhí)行。
用戶正在使用Emacs,突然需要查看系統(tǒng)進程情況。就首先使用組合鍵將Emacs進程掛起,然后使用bg命令將其在后臺啟動,這樣就得到了前臺的操作控制權(quán),接著鍵入“ps –x”查看進程情況。查看完畢后,使用fg命令將Emacs帶回前臺運行即可。其命令格式為:
$ bg emacs
$ ps –x
$ fg emacs
默認情況下,fg和bg命令對最近停止的作業(yè)進行操作。如果希望恢復其他作業(yè)的運行,可以在命令中指定要恢復作業(yè)的作業(yè)號來恢復該作業(yè)。例如:
$ fg 1
cat > text.file
關(guān)于linux 調(diào)用 su 進程的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。
成都創(chuàng)新互聯(lián)科技公司主營:網(wǎng)站設(shè)計、網(wǎng)站建設(shè)、小程序制作、成都軟件開發(fā)、網(wǎng)頁設(shè)計、微信開發(fā)、成都小程序開發(fā)、網(wǎng)站制作、網(wǎng)站開發(fā)等業(yè)務(wù),是專業(yè)的成都做小程序公司、成都網(wǎng)站建設(shè)公司、成都做網(wǎng)站的公司。創(chuàng)新互聯(lián)公司集小程序制作創(chuàng)意,網(wǎng)站制作策劃,畫冊、網(wǎng)頁、VI設(shè)計,網(wǎng)站、軟件、微信、小程序開發(fā)于一體。
分享標題:Linux若何使用su進程進行切換?(linux調(diào)用su進程)
本文地址:http://m.5511xx.com/article/djhcojc.html


咨詢
建站咨詢
