⑴ 新手求助linux列印機共享問題
首先,要啟動CUPS列印服務,用下面這個命令:
/etc/init.d/cups start
然後在CUPS伺服器主機server中,我們要做好2個文件的設置,這兩個文件分別是:
/etc/cups/cupsd.conf
/etc/cups/printers.conf
其中,cupsd.conf是控制cups服務的設置,而printers.conf則是對列印機進行設置的。
設置這兩個文件並不復雜,這里不建議手工修改,因為可以用web方式來設置,然後自動生成。
只要在本機的網頁瀏覽器輸入這個網址,就可以進入CUPS的web設置界面:
http://伺服器主機名:631 例如: http://server:631
不過在這里,覺得需要介紹一下這兩個文件裡面的內容,這樣對大家的理解會有好處。
而且,我發現如果要限制用戶的話,好像還是需要手動修改printers.conf文件的。
cupsd.conf文件中的內容:
#================================
AuthType Basic
AuthClass System
Order Deny,Allow
Deny From All
Allow From 127.0.0.1
#上面這個部分是設定對CUPS服務管理的許可權,一般只准許從本機進行對CUPS服務的修改控制。
#所以可以看到 allow地址是 127.0.0.1
Order Deny,Allow
Deny From All
Allow From All
#上面這個部分是對CUPS服務的功能許可權默認設置,一般如此,沒有什麼特別的。
#
# End of "$Id: cupsd.conf.in,v 1.16 2004/08/18 17:53:47 mike Exp $".
#
# Lines below are automatically generated - DO NOT EDIT
#下面這部分是設置列印機在CUPS中的使用。因為伺服器畢竟只是電腦,真正要列印還是通過列印機
#從設置看基本上也是全部使用許可權開放,如果要限制IP地址區域的話,需要在Allow 後面進行設置。
#注意上面這一行,其中HP是列印機的名字,要和printers.cups中設置的一樣才可以其作用。
Order Deny,Allow
Deny From All
AuthType None
Allow from All
#================================
printers.conf文件中的內容:
#================================
#下面這一行中的HP是列印機的名字,為方便設置,建議和列印機的網路主機名一致
Info Created by redhat-config-printer 0.6.x
DeviceURI lpd://HP/PORT1
State Idle
Accepting Yes
JobSheets none none
QuotaPeriod 0
PageLimit 0
KLimit 0
AllowUser root
AllowUser PETER
AllowUser SUSAN
#================================
這里,要重點說一下上面這部分中的黑體字那一行
DeviceURI lpd://HP/PORT1
這一行是定義列印機與CUPS伺服器之間通過什麼協議來連接,還有一些其它的候選協議如下:
file:/path/to/filename.prn
http://hostname:631/ipp/
http://hostname:631/ipp/port1
ipp://hostname/ipp/
ipp://hostname/ipp/port1
lpd://hostname/queue
socket://hostname
socket://hostname:9100
以上這些列印協議中,hostname指的是列印機的網路主機名,也可以用列印機的IP地址代替,631則是CUPS服務的埠號
這其中,port1一般是惠普列印機的默認queue,如果是多queue列印機,你可以通過ftp協議登陸到列印機上,然後看看列印機系統上根目錄下有哪些目錄,從中可以判斷出queue的名字
這里要注意一個問題,因為我在實際操作中,發現 redhat-config-printer-gui 圖形界面的列印機設置只支持 LPD 協議的列印機設置。也就是說,如果你採用 IPP, HTTP, 或者 socket,即使配置成功,測試頁也可以列印,但是就是不可以使用 redhat-config-printer-gui 圖形界面來對列印機進行進非同步設置。為了方便起見,我建議大家還是選用 LPD 來設置CUPS伺服器和列印機之間的連接。
還有 AllowUser 語句,通過這條語句,可以允許或限制特定用戶的列印許可權,假如沒有這條語句,就是所有用戶可以列印。
這條語句是需要手動添加的。
*注意每次通過redhat-config-printer-gui 圖形界面進行設置後,AllowUser 語句都會被自動刪掉,需要重新添加
另外有關於 cupsd.conf 文件的補充內容:
在做好上面的設置後,發現如果要限制IP網段的話,手工配置很麻煩,於是通過redhat-config-printer-gui圖形界面來配置。
下面這一部分是採用redhat-config-printer-gui圖形界面設置後自動在cupsd.conf文件產生的,不建議手動添加。
不過要注意的是,如果想要採用redhat-printer-config-gui圖形界面來修改設置,在printers.conf文件中,網路列印協議要採用LPD協議:
#============================
Browsing On
BrowseProtocols cups
BrowseOrder Deny,Allow
BrowseAllow from @LOCAL
BrowseAddress 255.255.255.255
Listen *:631
#============================
這其中 Listen 語句是設定允許使用CUPS服務的網路限制的。"*"代表所有的網路
我在一些資料中看到,說是如果要設置網路區域,是要寫成如下格式:
Listen 0.0.0.0:631
但實際上是錯誤的,如果寫成象上面那樣,會導致CUPS服務啟動出錯。
會給出如下的出錯信息:Child exited with status: 98!
所以,正確方法還是用 *號代替所有網路。
至於其它區域段IP網路設置,大家可以通過 redhat-printer-config-gui圖形界面中的 share 選項進行控制,非常方便,在此就不一一列舉。
做完以上這些,重新啟動一下CUPS服務就可以.
用 lpq.cups 命令看一下列印機的狀態, 如果有 "HP is ready" 字樣,就說明CUPS伺服器設置成功了。
客戶端設置:
前提是CUPS伺服器的防火牆要打開,至少631埠號不能屏蔽。
客戶端的設置非常簡單,只需要配置一個文件:
/etc/cups/client.conf
client.conf文件內容:
#======================
#ServerName CUPS伺服器地址或伺服器名,例如:
ServerName server
#======================
的確是很簡單吧,設置好後重啟一下CUPS服務就可以了。 」
我是通過上面的那篇文章設置的,前面的伺服器設置都正常,問題可能處在客戶端的設置,上面的帖子說要把客戶端裡面的/etc/cups/client.conf修改下,但是問題是現在所有的F5系統主機名字都是一樣的 而其我是該了好幾次的主機名都沒辦法改。用HOSTNAME命令和在HOTS下都沒辦法。
⑵ linux print命令
具體參數及講解如下:
print命令的格式是:
print xxx
p xxx
1. print 操作符
@
是一個和數組有關的操作符,在後面會有更詳細的說明。
::
指定一個在文件或是一個函數中的變數。
{}
表示一個指向內存地址的類型為type的一個對象。
2. 察看內容
全局變數(所有文件可見的)
靜態全局變數(當前文件可見的)
局部變數(當前Scope可見的)
如果你的局部變數和全局變數發生沖突(也就是重名),一般情況下是局部變數會隱藏全局變數。如果此時你想查看全局變數的值時,你可以使用「::」操作符:
file::variable
function::variable
eg:
查看文件f2.c中的全局變數x的值:
gdb) p 'f2.c'::x
註:如果你的程序編譯時開啟了優化選項,那麼在用GDB調試被優化過的程序時,可能會發生某些變數不能訪問,或是取值錯誤碼的情況。對付這種情況時,需要在編譯程序時關閉編譯優化。GCC,你可以使用「-gstabs」 選項來解決這個問題。
3. 察看數組
(1)動態數組:
p *array@len
array:數組的首地址,len:數據的長度
eg:
(gdb) p *array@len
$1 = {2, 4, 6, 8, 10}
(2)靜態數組
可以直接用print數組名,就可以顯示數組中所有數據的內容了。
4. 輸出格式
x 按十六進制格式顯示變數。
d 按十進制格式顯示變數。
u 按十六進制格式顯示無符號整型。
o 按八進制格式顯示變數。
t 按二進制格式顯示變數。
a 按十六進制格式顯示變數。
c 按字元格式顯示變數。
f 按浮點數格式顯示變數。
eg:
(gdb) p i
$21 = 101
(gdb) p/a i
$22 = 0x65
(gdb) p/c i
$23 = 101 'e'
5. 察看內存
使用examine(簡寫x)來查看內存地址中的值。語法:
x/
n、f、u是可選的參數。
(1)n 是一個正整數,表示顯示內存的長度,也就是說從當前地址向後顯示幾個地址的內容。
(2)f 表示顯示的格式,參見上面。如果地址所指的是字元串,那麼格式可以是s,如果地十是指令地址,那麼格式可以是i。
(3)u 表示從當前地址往後請求的位元組數,如果不指定的話,GDB默認是4個bytes。u參數可以用下面的字元來代替,b表示單位元組,h表示雙位元組,w表示四字 節,g表示八位元組。當我們指定了位元組長度後,GDB會從指內存定的內存地址開始,讀寫指定位元組,並把其當作一個值取出來。
eg:
x/3uh 0x54320 :從內存地址0x54320讀取內容,h表示以雙位元組為一個單位,3表示三個單位,u表示按十六進制顯示。
6. 察看寄存器
(1)要查看寄存器的值,很簡單,可以使用如下命令:
info registers
(2)查看寄存器的情況。(除了浮點寄存器)
info all-registers
(3)查看所有寄存器的情況。(包括浮點寄存器)
info registers
(4)查看所指定的寄存器的情況。
寄存器中放置了程序運行時的數據,比如程序當前運行的指令地址(ip),程序的當前堆棧地址(sp)等等。你同樣可以使用print命令來訪問寄存器的情況,只需要在寄存器名字前加一個$符號就可以了。如:p $eip。
7. display自動顯示的變數
(1)格式:display[/i|s] [expression | addr]
eg:
display/i $pc
$pc是GDB的環境變數,表示著指令的地址,/i則表示輸出格式為機器指令碼,也就是匯編。於是當程序停下後,就會出現源代碼和機器指令碼相對應的情形,這是一個很有意思的功能。
(2)其他
undisplay
delete display
刪除自動顯示,dnums意為所設置好了的自動顯式的編號。如果要同時刪除幾個,編號可以用空格分隔,如果要刪除一個范圍內的編號,可以用減號表示(如:2-5)
disable display
enable display
disable和enalbe不刪除自動顯示的設置,而只是讓其失效和恢復。
info display
查看display設置的自動顯示的信息。GDB會打出一張表格,向你報告當然調試中設置了多少個自動顯示設置,其中包括,設置的編號,表達式,是否enable。
8. 設置
(1)set print address
set print address on
打開地址輸出,當程序顯示函數信息時,GDB會顯出函數的參數地址。
(2)set print array
set print array on
打開數組顯示,打開後當數組顯示時,每個元素佔一行,如果不打開的話,每個元素則以逗號分隔。
(3)set print elements
這個選項主要是設置數組的,如果你的數組太大了,那麼就可以指定一個來指定數據顯示的最大長度,當到達這個長度時,GDB就不再往下顯示了。如果設置為0,則表示不限制。
(4)set print null-stop
如果打開了這個選項,那麼當顯示字元串時,遇到結束符則停止顯示。這個選項默認為off。
(5)set print pretty on
如果打開printf pretty這個選項,那麼當GDB顯示結構體時會比較漂亮。如:
$1 = {
next = 0x0,
flags = {
sweet = 1,
sour = 1
},
meat = 0x54 "Pork"
}
(6)set print union
設置顯示結構體時,是否顯式其內的聯合體數據。
(7)set print object
在C++中,如果一個對象指針指向其派生類,如果打開這個選項,GDB會自動按照虛方法調用的規則顯示輸出,如果關閉這個選項的話,GDB就不管虛函數表了。
⑶ 求linux命令 列印文本文件內容到控制台 多個文件可以左右分欄列印, 我記得有這么一個命令,想不起來了
最簡單的你 a.out >> 1.txt
或者用p2,重定向。
你首先要搞清楚控制台上的輸出是怎麼輸出的,比如說是程序裡面printf出來的, 腳本裡面echo出來的等等。
然後做一個寫日誌的函數代碼那個輸出。也可以把標准輸出的文件描述符p到你要寫的文件上面。
最簡單的你 a.out >> 1.txt
或者用p2,重定向。
函數執行,產生的標准輸出,已經再控制台了,我再把它重定向。
你首先要搞清楚控制台上的輸出是怎麼輸出的,比如說是程序裡面printf出來的, 腳本裡面echo出來的等等。
然後做一個寫日誌的函數代碼那個輸出。也可以把標准輸出的文件描述符p到你要寫的文件上面。
execvp(args[0], args) 這個函數運行產生的結果。
使用命令重定向操作符可以使用重定向操作符將命令輸入和輸出數據流從默認位置重定
向到不同的位置。輸入或輸出數據流的位置即為句柄。
下表將列出可用的句柄。
句柄 句柄的數字代號 描述
STDIN 0 鍵盤輸入
STDOUT 1 輸出到命令提示符窗口
STDERR 2 錯誤輸出到命令提示符窗口
UNDEFINED 3-9 這些句柄由應用程序單獨定義,並且是各個工具特定的。
數字 0 到 9 代表前 10 個句柄。可以使用命令 Cmd.exe 運行程序並將該程序前 10 個
句柄中的任何一個重定向。要指定想使用的句柄,可在重定向操作符前面鍵入該句柄的
數字。如果未定義句柄,則默認的 < 重定向輸入操作符是 0,而默認的 > 重定向輸出
操作符是 1。鍵入 > 或 < 操作符之後,必須指定要讀取或寫入數據的位置。可以指定
文件名或另一個現有的句柄。
要指定重定向到現有句柄,請使用與 (&) 字元,後面接要重定向的句柄號
(例如 &句柄#)。例如,下面的命令可以將句柄 2(即 STDERR)重定向到
句柄 1(即 STDOUT):
2>&1
下表列出了可用於將輸入和輸出數據流進行重定向的操作符。
重定向操作符 描述
> 將命令輸出寫入到文件或設備(例如列印機)中,而不是寫在命令提示符窗口或句柄中。
< 從文件中而不是從鍵盤或句柄中讀入命令輸入。
>> 將命令輸出添加到文件末尾而不刪除文件中的信息。
>& 將一個句柄的輸出寫入到另一個句柄的輸入中。
<& 從一個句柄讀取輸入並將其寫入到另一個句柄輸出中。
| 從一個命令中讀取輸出並將其寫入另一個命令的輸入中。也稱作管道。
默認情況下,可以從鍵盤將命令輸入(即 STDIN 句柄)發送到 Cmd.exe,然後由
Cmd.exe 將命令輸出(即 STDOUT 句柄)發送到命令提示符窗口。
重定向輸入 (<)
要將鍵盤輸入重定向到文件或設備,請使用 < 操作符。例如,要從 File.txt 獲取
sort 命令的輸入,請鍵入:
sort<file.txt
File.txt 的內容將以字母順序列表的方式顯示在命令提示符窗口中。
< 操作符可以打開具有隻讀訪問的指定文件名。所以,不能使用該操作符向文件中寫入
信息。例如,如果以 <&2 啟動程序,則所有試圖讀取句柄 0 的操作都將失敗,因為句
柄 2 最初是以只寫訪問打開的。
注意
0 是 < 重定向輸入操作符的默認句柄。
重定向輸出 (>)
幾乎所有的命令都將輸出發送到命令提示符窗口。即使將輸出發送到驅動器或列印機的
命令也會在命令提示符窗口顯示消息和提示。
要將輸出從命令提示符窗口重定向到文件或設備,請使用 > 操作符。可以在許多命令中
使用該操作符。例如,要將 dir 輸出重定向到 Dirlist.txt,請鍵入:
dir>dirlist.txt
如果 Dirlist.txt 不存在,Cmd.exe 將創建該文件。如果 Dirlist.txt 存在,Cmd.exe
將使用 dir 命令的輸出替換文件中的信息。
要運行 netsh routing mp 命令,然後將輸出發送到 Route.cfg,請鍵入:
netsh routing mp>c:\route.cfg
> 操作符可以打開具有隻寫訪問屬性的指定文件。所以,不能使用該操作符讀取文件。
例如,如果使用重定向 >&0 啟動程序,則所有試圖寫入句柄 1 的操作都將失敗,因為
句柄 0 最初是以只讀訪問打開的。
注意
1 是 > 重定向輸出操作符的默認句柄。
復制句柄
重定向操作符 & 可以將輸出或輸入從一個指定句柄復制到另一個指定的句柄。例如,
要將 dir 輸出發送到 File.txt 並將錯誤輸出發送到 File.txt,請鍵入:
dir>c:\file.txt 2>&1
復制句柄時,可以復制該句柄原狀態的所有特性。例如,如果一個句柄具有隻寫訪問的
屬性,則該句柄的所有副本都具有隻寫訪問屬性。不能將一個具有隻讀訪問屬性的句柄
復制到另一個具有隻寫訪問屬性的句柄。
使用 & 操作符重定向輸入和副本
要將重定向輸入操作符 (<) 與復制操作符 (&) 一起使用,指定的文件必須已經存在。
如果輸入文件存在,Cmd.exe 將以只讀方式打開該文件,然後將文件中包含的字元作為
輸入發送到此命令(如同從鍵盤輸入一樣)。如果指定了句柄,Cmd.exe 將指定的句柄
復制到系統現有的句柄中。
例如,要以句柄 0 輸入讀取(即 STDIN)的方式打開 File.txt,請鍵入:
<file.txt
要打開 File.txt,並在內容排序後將輸出發送到命令提示符窗口(即 STDOUT),請鍵入:
sort<file.txt
要查找 File.txt,然後將句柄 1(即 STDOUT)和句柄 2(即 STDERR)重定向到
Search.txt,請鍵入:
findfile file.txt>search.txt 2<&1
要以句柄 0 輸入讀取(即 STDIN)的方式復制用戶定義句柄 3,請鍵入:
<&3
使用 & 操作符重定向輸出和復制
如果將輸出重定向到文件且指定了現有的文件名,Cmd.exe 將以只寫方式打開文件並覆
蓋該文件內容。如果指定了句柄,Cmd.exe 將文件復制到現有句柄中。
要將用戶定義句柄 3 復制到句柄 1,請鍵入:
>&3
要將包括句柄 2(即 STDERR)的所有輸出從 ipconfig 命令重定向到
句柄 1(即 STDOUT),然後將輸出重定向到 Output.log,請鍵入:
ipconfig.exe>>output.log 2>&1
使用 >> 重定向操作符追加輸出
要從命令中將輸出添加到文件末尾而不丟失文件中已存在的任何信息,請使用兩個連續
的大於號(即 >>)。例如,下面的命令可以將由 dir 命令生成的目錄列表追加到
Dirlist.txt 文件:
dir>>dirlist.txt
要將 netstat 命令的輸出追加到 Tcpinfo.txt 的末尾,請鍵入:
netstat>>tcpinfo.txt
使用管道操作符 (|)
管道操作符 (|) 可以提取一個命令的輸出(默認情況下是 STDOUT),然後將其導入另
一個命令的輸入中(默認情況下是 STDIN)。例如,下面的命令將對目錄分類:
dir | sort
在本例中,將同時啟動兩個命令,但隨後 sort 命令會暫停,直到它接收到 dir 命令
的輸出為止。sort 命令使用 dir 命令的輸出作為輸入,然後將輸出發送到
句柄 1(即 STDOUT)。
合並帶重定向操作符的命令
可以通過合並帶有其他命令和文件名的篩選器命令創建自定義命令。例如,可以使用以
下命令存儲包含「LOG」字元串的文件名:
dir /b | find "LOG" > loglist.txt
dir 命令的輸出通過 find 篩選器命令發送。包含字元串 "LOG" 的文件名作為文件名
列表(例如,NetshConfig.log、Logdat.svd 和 Mylog.bat)存儲在文件
Loglist.txt 中。
要在相同命令中使用多個篩選器,請使用管道 (|) 分隔篩選器。例如,下面的命令將
搜索 C 盤上的每個目錄以查找包含 "LOG" 字元串的文件名,並且在命令提示符窗口中
每次顯示一屏:
dir c:\ /s /b | find "LOG" | more
利用管道 (|) 可以將 Cmd.exe 導向為通過 find 篩選器命令發送 dir 命令輸出。
find 命令只選擇包含字元串 "LOG" 的文件名。more 命令可以顯示由 find 命令選擇
的文件名(在命令提示符窗口中每次顯示一屏)。有關篩選器命令的詳細信息,請參閱
使用篩選器。
⑷ Linux裡面shell下列印命令是什麼
printf終端列印
printf使用的參數和C語言中的printf函數一樣,使用引用文本或由空格分隔的參數。在printf函數中,我們可以使用格式化字元串,指定字元串的寬度、左右對齊方式等。在默認情況下,printf不會在行尾添加換行符,需要手動添加。
復制代碼代碼如下:
printf "Hello world" #使用引用字元
printf "%-5s %-10s %-4s
" No Name Mark #指定寬度及左對齊方式
printf "%-5s %-10s %-4s
" 1 Sarath 80.3456
----僅供參考
⑸ linux如何查看列印隊列_linux命令行模式查看所有列印信息
1、當列印任務開始進行時,這些列印任務便被保存在列印作業列表(也稱列印隊列)內。如果列印機因意外暫停(如列印機未連接)而未完成列印任務,則該列印任務將列入列印隊列,並且存入文件的列印池,備份。進行備鋒鉛孝份的列印任務,如果不加以清激核除,後面的列印任務無法執行,導致列印機無法繼續列印。
2、列印機的列印列表裡,一個文檔,無法列印,也無法刪除。重啟動,故障依舊。那篇文檔牢牢地佔據了列印列表。嘗試列印新的文檔,居然是「列印到文件」。嘗試刪除列印機,准備重裝列印機驅動,居然也不讓刪除。
利用「列印機隊列快速清除工具」可以很快的解決上面的問題。
在WindowsXP/2000操作系統下如下操作。
依次點擊「開始」→「控制面板」→「性能和維護」→「管理工具」→「服務」→「PrintSpooler」。點擊左側「停止此服務」,停止列印機服務。
依次點擊「開始」→「運行」,在「運行」窗口的命令行中輸入:spool點擊「確認」按鈕,打「spool」文件夾;在「spool」文件夾中,雙擊打開「PRINTERS」文件夾;刪除「PRINTERS」文件夾中的所有文件;回到「服務」窗口,點擊左側「啟動此服務」,重新啟動列印服務。檢查列印隊列,銀稿確認列印任務已經被清除。
【簡便方法】
把下列的命令復制到一個文本文件中.
echo快速清除列印隊列
netstopspooler
echoy|del%windir%system32spoolPRINTERS*.*
netstartspooler
然後把文本文件的擴展名改成bat,雙擊執行就OK了。